2016-01-22 91 views
0

我想用下面的代码将2个标记添加到谷歌地图。它只显示一个位置而不是两个。任何人都可以看看它并发表评论吗?我看到使用调试器的位置值是不同的。Android地图v2:添加多个标记到谷歌地图片段

公共无效updateMapWithNewLocation(){

Marker marker1 = null; 
    Marker marker2 = null; 

    LatLng latLng1 = null; 
    LatLng latLng2 = null; 

    if (mMyLocation != null) { 

     latLng1 = new LatLng(mMyLocation.getLatitude(), mMyLocation.getLongitude()); 

     MarkerOptions myMarkerOptions = new MarkerOptions() 
       .position(latLng1) 
       .title("me"); 
     marker1 = mMap.addMarker(myMarkerOptions); 
    } 

    if (mFriendLocation != null) { 
     latLng2 = new LatLng(mMyLocation.getLatitude(), mMyLocation.getLongitude()); 

     MarkerOptions friendMarkerOptions = new MarkerOptions() 
       .position(latLng2) 
       .title("friend"); 
     marker2 = mMap.addMarker(friendMarkerOptions); 
    } 


    List<Marker> markerList = new ArrayList<>(); 
    if(marker1 != null){ 
     markerList.add(marker1); 
    } 
    if(marker2 != null) { 
     markerList.add(marker2); 
    } 

    zoomToShowAllMarkers(markerList); 
} 

private void zoomToShowAllMarkers(List<Marker> markers) { 
    if (markers == null || markers.size() < 1) 
     return; 

    LatLngBounds.Builder builder = new LatLngBounds.Builder(); 
    for (Marker marker : markers) { 
     builder.include(marker.getPosition()); 
    } 

    for (Marker m : markers) { 
     builder.include(m.getPosition()); 
    } 
    LatLngBounds bounds = builder.build(); 

    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(bounds.getCenter(), 10)); 
} 

回答

0

尝试使用以下代码。

// Creating an instance of MarkerOptions 
MarkerOptions markerOptions1 = new MarkerOptions();      

// Setting latitude and longitude for the marker 
markerOptions1.position(LatLng1); 

// Adding marker on the Google Map 
googleMap.addMarker(markerOptions1);  

// Creating an instance of MarkerOptions 
MarkerOptions markerOptions2 = new MarkerOptions();      

// Setting latitude and longitude for the marker 
markerOptions2.position(LatLng2); 

// Adding marker on the Google Map 
googleMap.addMarker(markerOptions2); 

或者您可以在您的自定义方法中使用循环添加。

+0

这与问题中的代码有何不同? –

+0

我在父级布局中给出了静态高度,并且所有子级高度都与父级布局相同 – Naitik

0

这是我如何做有界放大:

map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() { 
        @Override 
        public void onMapLoaded() { 
         CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, 20); 
         map.animateCamera(cameraUpdate); 
        } 
       }); 

onMapLoaded()使得地图加载得到后缩放完成。

希望这会有所帮助。

0

感谢您的建议,并期待它。

我不得不使用myLocation代替friendLocation的复制/粘贴错误

该特定行:

latLng2 =新经纬度(mMyLocation.getLatitude()mMyLocation.getLongitude()); < - 应该使用mFriendLocation而不是mMyLocation。

对不起。