Android Google Map只绘制一个标记,但不是全部

时间:2016-03-07 08:34:14

标签: java android google-maps

尝试在Android中的Google地图上显示多个标记时遇到了一些问题。这是我在onCreate()中所做的:

map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
            .getMap();
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(mLocation, 11.0f));
    map.getUiSettings().setZoomControlsEnabled(true);

    convertedGeomList = RetrieveStoreAsyncTask.convertedGeom;
    for (int i = 0; i < convertedGeomList.size(); i++) {
        // Drawing marker on the map
        drawMarker(new LatLng(Double.parseDouble(convertedGeomList.get(i)
                .getStoreX()), Double.parseDouble(convertedGeomList.get(i)
                .getStoreY())));
    }

    map.addMarker(new MarkerOptions()
            .position(new LatLng(1.36111, 103.79907))
            .title("Pizza Hut Kranji")
            .icon(BitmapDescriptorFactory
                    .defaultMarker(BitmapDescriptorFactory.HUE_RED)));

    map.addMarker(new MarkerOptions()
            .position(new LatLng(3.60988, 170.99001))
            .title("Pizza Hut Woodlands")
            .icon(BitmapDescriptorFactory
                    .defaultMarker(BitmapDescriptorFactory.HUE_RED)));

我硬编码了两个标记以检查它是否有图,但不幸的是,它只绘制了一个。然后,对于drawMarker():

private void drawMarker(LatLng point) {
    // Creating an instance of MarkerOptions
    MarkerOptions markerOptions = new MarkerOptions();

    // Setting latitude and longitude for the marker
    markerOptions.position(point);

    // Adding marker on the Google Map
    map.addMarker(markerOptions);
}

我不确定为什么它只绘制了一个标记,尽管我的JSON返回了多个lat和lng。有什么想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

OnMapReadyCallbackActivity中实施Fragment,因为这会为您提供onMapReady(GoogleMap map)方法。

现在在 onCreate()

((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(this);

@Override
    public void onMapReady(GoogleMap map)
    {
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(mLocation, 11.0f));
        map.getUiSettings().setZoomControlsEnabled(true);

        convertedGeomList = RetrieveStoreAsyncTask.convertedGeom;
        for (int i = 0; i < convertedGeomList.size(); i++) {
        // Drawing marker on the map
            drawMarker(new LatLng(Double.parseDouble(convertedGeomList.get(i)
                    .getStoreX()), Double.parseDouble(convertedGeomList.get(i)
                    .getStoreY())));
    }