为什么只有一个Google Maps V2标记显示在片段中?

时间:2015-03-21 20:40:12

标签: android google-maps android-fragments

我使用解决方案here将标记添加到片段中的地图中,并且无法弄清楚为什么我只能添加一个标记。

我确定在构建摄像机位置时遗漏了一些东西,这在我的测试代码中被调用了两次。 (参见下面的addLocationToMap)。

我正在主线程上检索地理坐标的ArrayList,并希望遍历每个条目上调用addLocationToMap的地图选项卡中的列表。

这是我的代码:

public class RentalMapFragment extends Fragment {

MapView mMapView;
private GoogleMap googleMap;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    // inflate and return the layout
    View v = inflater.inflate(R.layout.fragment_map, container, false);

    mMapView = (MapView) v.findViewById(R.id.mapView);
    mMapView.onCreate(savedInstanceState);

    mMapView.onResume();// needed to get the map to display immediately

    try {
        MapsInitializer.initialize(getActivity().getApplicationContext());
    } catch (Exception e) {
        e.printStackTrace();
    }

    googleMap = mMapView.getMap();
    int level = 12;

    addLocationToMap(17.385044, 78.486679, "Marker 2", level);
    addLocationToMap(17.385044, 78.486671, "Marker 1", level);


    // Perform any camera updates here
    CameraPosition cameraPosition = new  CameraPosition.Builder().target(new LatLng(17.385000, 78.486600)).zoom(level).build();
        googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

    return v;
}

private void addLocationToMap(double latitude, double longitude, String markerTitle, int level) {
    // Create lat/lon
    LatLng latLng = new LatLng(latitude, longitude);

    // create marker
    MarkerOptions marker = new MarkerOptions().position(latLng).title(markerTitle);

    // Changing marker icon
    marker.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE));

    // adding marker
    googleMap.addMarker(marker);
}

@Override
public void onResume() {
    super.onResume();
    mMapView.onResume();
}

@Override
public void onPause() {
    super.onPause();
    mMapView.onPause();
}

@Override
public void onDestroy() {
    super.onDestroy();
    mMapView.onDestroy();
}

@Override
public void onLowMemory() {
    super.onLowMemory();
    mMapView.onLowMemory();
}

}

1 个答案:

答案 0 :(得分:0)

事实证明,放置每个标记后我不应该创建相机位置。相反,在添加所有标记后,我需要为相机选择一个位置来查看来自的标记。

我正在更新我的问题以证明这一点。