Android Google Maps API v2 onInfoWindowClick触发所有侦听器创建活动

Kin*_*Luy 1 google-maps-markers google-maps-android-api-2

嗨,我有一个有很多标记的地图.当我将标记添加到地图时,我想为每个标记添加一个onInfoWindowClick监听器和单独的数据.我想用onInfoWindowClick Listener加载带有标记信息的活动.

代码不正确.创建activety时,所有侦听器都会同时触发,当我单击infoWindow时,没有任何反应.

private void addMarkerToMap(double lat, double lng, String eventTitle,
            String eventDiscribtion) {
        Marker currentMarker = myMap.addMarker(new MarkerOptions()
                .position(new LatLng(lat, lng)).title(eventTitle)
                .snippet(eventDiscribtion));

        onInfoWindowClick(currentMarker);
    }

    @Override
    public void onInfoWindowClick(Marker marker) {

            Intent nextScreen = new Intent(MapsActivity.this,
                    EventActivity.class);
            nextScreen.putExtra("userId", "" + userId);
            nextScreen.putExtra("eventId", "" + eventId);

            startActivityForResult(nextScreen, 0);

    }
Run Code Online (Sandbox Code Playgroud)

Ror*_*Dev 7

您将在GoogleMap对象(myMap)中实现onclick行为

myMap.setOnInfoWindowClickListener(
  new OnInfoWindowClickListener(){
    public void onInfoWindowClick(Marker marker){
      Intent nextScreen = new Intent(MapsActivity.this,EventActivity.class);
        nextScreen.putExtra("userId", "" + userId);
        nextScreen.putExtra("eventId", "" + eventId);

        startActivityForResult(nextScreen, 0);
    }
  }
)
Run Code Online (Sandbox Code Playgroud)

  • 我通过将标记存储在活动级别定义的Hashmap <Marker,Object>中来克服了这个问题.这样当调用Listener时我可以抓取相关的对象:`MyObject obj = myHashMap.get(marker);` (2认同)