点击google map infowindow时调用另一个片段页面

时间:2015-12-03 14:34:35

标签: android google-maps android-fragments android-intent retrofit

我正在使用改造来在线获取数据。但是我无法找到解决问题的方法。我想调用另一个片段并显示有关我单击的标记的更多详细信息,并将这些值传递给另一个片段。有人可以帮我这个。任何帮助和解决方案都非常受欢迎。

MapFragment.jav

 RestAdapter adapter = new RestAdapter.Builder()
            .setEndpoint(getString(R.string.fine_dinings))
            .build();

    RestaurantPlacesApiInterface restaurantPlacesApiInterface =
            adapter.create(RestaurantPlacesApiInterface.class);

    restaurantPlacesApiInterface.getStreams(new Callback<List<RestaurantPlaces>>() {
        @Override
        public void success(List<RestaurantPlaces> restaurantPlaces, Response response) {
            for (RestaurantPlaces restaurantPlace : restaurantPlaces){
                MarkerOptions options = new MarkerOptions().position(new LatLng(restaurantPlace.getLatitude(),
                        restaurantPlace.getLongitude()));
                options.title(restaurantPlace.getName());
                options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
                getMap().addMarker(options);
            }
        }

        @Override
        public void failure(RetrofitError error) {

        }
    });

}

2 个答案:

答案 0 :(得分:1)

你需要使用它:

@Override
public boolean onMarkerClick(Marker marker) {
    // call fragment and pass data.
    return false; 
}

如果您返回false,则不会消耗点击。 如果你需要帮助实现这一点让我知道,它相当简单。

以下是一个快速示例,请更改名称以匹配您自己的代码:

public class MapActivity implements OnMapReadyCallback, GoogleMap.OnMarkerClickListener {
    private GoogleMap mGoogleMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_map);

        initMap();
    }

    public void initMap() {
        MapFragment map = (MapFragment) getFragmentManager().findFragmentById(R.id.mapFragment);
        map.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        try {
            if (googleMap != null) {
                mGoogleMap = googleMap;
                mGoogleMap.setOnMarkerClickListener(this);              
                mGoogleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

                // Now make your retrofit call
            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("ERROR", "GOOGLE MAPS NOT LOADED");
        }
    }

    @Override
    public boolean onMarkerClick(Marker marker) {
        Bundle bundle = new Bundle();
        bundle.putString("myString", "value");
        // set Fragment class Arguments
        MyFragment myFragment= new MyFragment();
        myFragment.setArguments(bundle);
        // launch fragment

        return false; 
    }
}

答案 1 :(得分:1)

最好在片段中使用接口并在(使用RestAdapter的活动)

中实现该接口