2016-03-07 55 views
1

我在尝试在Android的谷歌地图上显示多个标记时遇到了一些问题。以下是我在的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多个纬度和经度返回。有任何想法吗?

在此先感谢。

+0

我就在想,如果它是因为地图没有加载完成,然后我绘制了标记直线距离,这就是原因? –

+0

可能是,但如果地图加载是问题,那么第一个标记也不应该是可见的...在我非常老的项目中,我使用与您的工作相同的方法。尝试实现'OnMapReadyCallback'而不是'getMap()',调用'getMapAsync()'。还有关于这个问题的任何日志? –

+0

你愿意提供一些例子吗? –

回答

0

试试这个:

ActivityFragment因为这实现OnMapReadyCallback将为您提供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()))); 
    } 
+0

它告诉我OnMapReadyCallback无法解析。我确实添加了Google服务库作为我的项目的参考。有任何想法吗? –

+0

可能您正在使用旧版Google地图库。看到[这篇文章](http://stackoverflow.com/questions/28755174/onmapreadycallback-cannot-be-resolved-to-a-type)**修复无法解决**错误。 –

+0

尽管我在属性中将其更改为5.1.1,但仍然无法解决。我无法导入它。有没有其他方法可以解决这个问题,而不是添加getMapAsync? –