2015-06-09 35 views
2

我有一个Google Maps API活动,并且只有在用户对其具有特定的半径时才可点击标记。 这样做的最好方法是什么? 这是我怎么设置我的标记:查看当前位置是否在标记附近

Marker marker1 = googleMap.addMarker(new MarkerOptions() 
      .position(new LatLng(49.793012, 9.926201)) 
      .title(getString(R.string.Title1)) 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))); 
    Marker marker2 = googleMap.addMarker(new MarkerOptions() 
      .position(new LatLng(49.792742, 9.939118)) 
      .title(getString(R.string.Title2)) 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))); 
    Marker marker3 = googleMap.addMarker(new MarkerOptions() 
      .position(new LatLng(49.793349, 9.932558)) 
      .title(getString(R.string.Title3)) 
      .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))); 

解决方案代码:

LatLng markerPosition = marker.getPosition(); 
myLocation = locationManager.getLastKnownLocation(provider); 
Location markerLoc = new Location("marker"); 
markerLoc.setLatitude(markerPosition.latitude); 
markerLoc.setLongitude(markerPosition.longitude); 
float meters = myLocation.distanceTo(markerLoc); 
+0

你解决了你的问题吗?你有没有嘲笑我的答案? –

+0

我仍然有问题比较两个位置。我现在这样做了: 'LatLng markerPosition = marker.getPosition(); myLocation = locationManager.getLastKnownLocation(provider); 位置markerLoc = new Location(“marker”); markerLoc.setLatitude(markerPosition.latitude); markerLoc.setLongitude(markerPosition.longitude); float meters = myLocation.distanceTo(markerLoc);' – maidi

+0

用你的代码编辑你的quesiton –

回答

0

你可以通过marker.getPosition()标记的LatLng;那么你可以将它与CurrentLocation进行比较。要做到这一点,你可以检查此post,接下来就可以使clickablenotclickable标记如下:

getMap().setOnMarkerClickListener(new OnMarkerClickListener() { 
    public boolean onMarkerClick(Marker marker) { 
     onMapClick(marker.getPosition()); 
     return true; 
    } 
}); 

如果你的函数返回true,就意味着你已经接受了发生的单击事件你的;否则,你没有接受它。

MarkerOptions.clickableMarker.setClickable

而且,你可以做到这一点。

这只是一个指导谁如何我会做你想做的。希望能帮助到你。 :)

相关问题