Thanks for information! That sounds like Google Map API V2 is way more complicated than V1 if developers try to use a popup to show information and execute different events.
If I am using RelativeLayout to position the popup over the marker, is there any way I can get the location of the marker on the mapFragement when I click the marker? Regards, On Wed, Mar 13, 2013 at 3:55 PM, Mark Murphy <[email protected]>wrote: > You define views for the InfoWindow, but that's not what is rendered > on the screen, AFAIK. Instead, the views appear to be converted into a > bitmap, presumably by drawing them into a bitmap-backed Canvas. My > assumption is that this is due to the inter-process communication > between the Maps V2 library in our apps and the Play Services > Framework, and their collaboration on actually assembling the map. > > You are welcome, presumably, to put your own widgets over top of the > map, by putting the Map in a RelativeLayout, FrameLayout, etc., though > I have not tried this. > > > On Wed, Mar 13, 2013 at 4:47 PM, Edward Lin <[email protected]> > wrote: > > I can supply the custom view, the views have the autolink for phone or > > email, but when I click the InfoWindow, it raised as whole InfoWindow > event. > > Here is the codes I revised from a post by Commonware. Any light? > > > > public class TaskMapV2 extends FragmentActivity implements > > OnInfoWindowClickListener { > > private static final String STATE_NAV="nav"; > > private static final int[] MAP_TYPE_NAMES= { R.string.normal, > > R.string.hybrid, R.string.satellite, R.string.terrain }; > > private static final int[] MAP_TYPES= { GoogleMap.MAP_TYPE_NORMAL, > > GoogleMap.MAP_TYPE_HYBRID, GoogleMap.MAP_TYPE_SATELLITE, > > GoogleMap.MAP_TYPE_TERRAIN }; > > private GoogleMap map=null; > > > > @Override > > protected void onCreate(Bundle savedInstanceState) { > > super.onCreate(savedInstanceState); > > > > setContentView(R.layout.map_fragement); > > > > SupportMapFragment mapFrag= > > > > > (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); > > > > > > map=mapFrag.getMap(); > > > > if (savedInstanceState == null) { > > CameraUpdate center= > > CameraUpdateFactory.newLatLng(new LatLng(40.76793169992044, > > > -73.98180484771729)); > > CameraUpdate zoom=CameraUpdateFactory.zoomTo(15); > > > > map.moveCamera(center); > > map.animateCamera(zoom); > > } > > > > addMarker(map, 40.748963847316034, -73.96807193756104, "A place", > > "Place Name"); > > > > map.setInfoWindowAdapter(new MapPopupAdapter(getLayoutInflater())); > > map.setOnInfoWindowClickListener(this); > > > > } > > > > @Override > > public void onSaveInstanceState(Bundle savedInstanceState) { > > super.onSaveInstanceState(savedInstanceState); > > > > } > > > > @Override > > public void onRestoreInstanceState(Bundle savedInstanceState) { > > super.onRestoreInstanceState(savedInstanceState); > > > > } > > > > @Override > > public void onInfoWindowClick(Marker marker) { > > Toast.makeText(this, marker.getTitle(), Toast.LENGTH_LONG).show(); > > } > > > > private void addMarker(GoogleMap map, double lat, double lon, > > int title, int snippet) { > > map.addMarker(new MarkerOptions().position(new LatLng(lat, lon)) > > .title(getString(title)) > > .snippet(getString(snippet))); > > } > > > > private void addMarker(GoogleMap map, double lat, double lon, > > String title, String snippet) { > > map.addMarker(new MarkerOptions().position(new LatLng(lat, lon)) > > .title(title) > > .snippet(snippet)); > > } > > } > > > > public class MapPopupAdapter implements InfoWindowAdapter { > > LayoutInflater inflater=null; > > > > public MapPopupAdapter(LayoutInflater inflater) { > > this.inflater=inflater; > > } > > > > @Override > > public View getInfoWindow(Marker marker) { > > return(null); > > } > > > > @Override > > public View getInfoContents(Marker marker) { > > View popup=inflater.inflate(R.layout.map_overlay_view, null); > > > > TextView tv=(TextView)popup.findViewById(R.id.item_title); > > tv.setText(marker.getTitle()); > > > > TextView snippet = (TextView)popup.findViewById(R.id.item_snippet); > > snippet.setText(marker.getSnippet()); > > > > TextView phone = (TextView)popup.findViewById(R.id.item_phone); > > phone.setText("262-347-5678"); > > > > return(popup); > > } > > } > > > > map_overlay_view > > <?xml version="1.0" encoding="utf-8"?> > > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" > > android:layout_width="wrap_content" > > android:layout_height="wrap_content" > > android:orientation="horizontal" > > android:paddingBottom="35dip" > > android:paddingLeft="10dip" > > android:minWidth="200dip" > > android:id="@+id/balloon_main_layout" > > android:paddingTop="0dip" > > android:paddingRight="0dip"> > > <LinearLayout > > android:layout_width="wrap_content" > > android:layout_height="wrap_content" > > android:orientation="vertical" > > android:layout_weight="1" > > android:paddingTop="10dip" > > android:id="@+id/balloon_inner_layout"> > > <TextView android:layout_height="wrap_content" > > android:layout_width="fill_parent" > > android:id="@+id/item_title" > > android:text="@string/item_title" > > android:textSize="16sp" > > android:textColor="#FF000000"></TextView> > > <TextView android:layout_height="wrap_content" > > android:layout_width="fill_parent" > > android:id="@+id/item_snippet" > > android:text="@string/item_snippet" > > android:textSize="16sp" > > android:textColor="#FF000000"></TextView> > > <TextView android:layout_height="wrap_content" > > android:layout_width="fill_parent" > > android:id="@+id/item_phone" > > android:text="@string/item_phone" > > android:textSize="16sp" > > android:autoLink="phone" > > android:textColor="#FF000000"></TextView> > > <TextView android:layout_height="wrap_content" > > android:layout_width="fill_parent" > > android:id="@+id/item_email" > > android:text="@string/balloon_item_email" > > android:autoLink="email" > > android:textSize="16sp"></TextView> > > </LinearLayout> > > <ImageView android:layout_width="wrap_content" > > android:layout_height="wrap_content" > > android:src="@drawable/icon_close_32" > > android:id="@+id/close_img_button" > > android:paddingLeft="12dip" > > android:paddingBottom="12dip" > > android:paddingRight="6dip" > > android:paddingTop="6dip"></ImageView> > > </LinearLayout> > > > > Many Thanks! > > > > > > > > > > On Wed, Mar 13, 2013 at 2:34 PM, Edward Lin <[email protected]> > wrote: > >> > >> I will have a try and let you know the results. > >> > >> Thanks! > >> > >> > >> > >> > >> On Wed, Mar 13, 2013 at 3:25 AM, Martin <[email protected]> wrote: > >>> > >>> Can you use the InfoWindowAdapter and override it's GetInfoContent > >>> handler to supply your own custom View and in that custom View create > the > >>> clickable Views you require? > >>> > >>> > >>> > https://developers.google.com/maps/documentation/android/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter#getInfoContents%28com.google.android.gms.maps.model.Marker%29 > >>> > >>> Martin. > >>> > >>> > >>> > >>> On Tuesday, March 12, 2013 9:29:00 PM UTC, elin wrote: > >>>> > >>>> According to the following link: > >>>> https://developers.google.com/maps/documentation/android/v1/mapkey > >>>> > >>>> Note: Version 1 of the Google Maps Android API as been officially > >>>> deprecated as of December 3rd, 2012. This means that from March 3rd, > 2013 > >>>> you will no longer be able to request an API key for this version. No > new > >>>> features will be added to Google Maps Android API v1. However, apps > using v1 > >>>> will continue to work on devices. Existing and new developers are > encouraged > >>>> to use Google Maps Android API v2. > >>>> > >>>> > >>>> So I am trying to migrate my Android Map API to Google Map API V2. My > >>>> Map application was using ItemsizedOverlay with onTap event so that > user can > >>>> click the Overlay on different links, views or buttons to navigate to > the > >>>> destination or close the BalloonItem if user click the close button. > But on > >>>> API v2, the ItemizedOverlay is replaced as InfoWindow. As a result, > any > >>>> listeners you set on the InfoWindow are disregarded and you cannot > >>>> distinguish between click events on various parts of the view. > >>>> > >>>> I cannot believe migrate to Map API v2 is going to reduce the features > >>>> of the Map application. Those features are something I cannot use > without > >>>> it. Can anyone let me know any alternative for getting onTap (or > onClick) > >>>> listener for the InfoWindow? Or what other control can provide the > similar > >>>> feature for InfoWindow. > >>>> > >>>> Many thanks! > >>>> > >>> -- > >>> -- > >>> You received this message because you are subscribed to the Google > >>> Groups "Android Developers" group. > >>> To post to this group, send email to > [email protected] > >>> To unsubscribe from this group, send email to > >>> [email protected] > >>> For more options, visit this group at > >>> http://groups.google.com/group/android-developers?hl=en > >>> --- > >>> You received this message because you are subscribed to the Google > Groups > >>> "Android Developers" group. > >>> To unsubscribe from this group and stop receiving emails from it, send > an > >>> email to [email protected]. > >>> For more options, visit https://groups.google.com/groups/opt_out. > >>> > >>> > >> > >> > > > > -- > > -- > > You received this message because you are subscribed to the Google > > Groups "Android Developers" group. > > To post to this group, send email to [email protected] > > To unsubscribe from this group, send email to > > [email protected] > > For more options, visit this group at > > http://groups.google.com/group/android-developers?hl=en > > --- > > You received this message because you are subscribed to the Google Groups > > "Android Developers" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > For more options, visit https://groups.google.com/groups/opt_out. > > > > > > > > -- > Mark Murphy (a Commons Guy) > http://commonsware.com | http://github.com/commonsguy > http://commonsware.com/blog | http://twitter.com/commonsguy > > _The Busy Coder's Guide to Android Development_ Version 4.6 Available! > > -- > -- > You received this message because you are subscribed to the Google > Groups "Android Developers" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/android-developers?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Android Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en --- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.

