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 <edwardlinw...@gmail.com> 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 <edwardlinw...@gmail.com> wrote:
>>
>> I will have a try and let you know the results.
>>
>> Thanks!
>>
>>
>>
>>
>> On Wed, Mar 13, 2013 at 3:25 AM, Martin <warwo...@gmail.com> 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 android-developers@googlegroups.com
>>> To unsubscribe from this group, send email to
>>> android-developers+unsubscr...@googlegroups.com
>>> 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 android-developers+unsubscr...@googlegroups.com.
>>> 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 android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> 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 android-developers+unsubscr...@googlegroups.com.
> 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 android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
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 android-developers+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to