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<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<https://developers.google.com/maps/documentation/android/>
>>> .
>>>
>>> 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.


Reply via email to