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.


Reply via email to