2017-05-06 1 views
0

제한된 영역에서 마커를 어떻게 끌어 놓을 수 있습니까? 예를 들어, 원의 반지름은 20m입니다. 사용자는 서클 내부로 드래그 앤 드롭 만 할 수 있습니다. 여기에 제가 시도한 코드가 있습니다.제한된 영역에서 마커를 어떻게 끌어 놓을 수 있습니까?

map.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
    @Override 
    public void onMapClick(LatLng latLng) { 
     mymarker.setPosition(latLng); 
     mGoogleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 
    } 
}); 

map.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() { 
    @Override 
    public void onMarkerDragStart(Marker arg0) { 
    } 

    @SuppressWarnings("unchecked") 
    @Override 
    public void onMarkerDragEnd(Marker arg0) { 
     Log.d("System out", "onMarkerDragEnd..."); 
     map.animateCamera(CameraUpdateFactory.newLatLng(arg0.getPosition())); 
    } 

    @Override 
    public void onMarkerDrag(Marker arg0) { 
    } 
}); 

답변

1

드래그가 시작되면 드래그를 제한하려는 경계로 맵을 이동할 수 있습니다. 지도 이동을 방지하려면지도 제스처를 사용 중지합니다. 확대/축소 또는 내 위치 컨트롤이있는 경우 여기에서 비활성화 할 수도 있습니다. 끌기가 끝나면 다시 사용할 수 있습니다.

map.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() { 
    @Override 
    public void onMarkerDragStart(Marker marker) { 
     map.animateCamera(CameraUpdateFactory.newLatLngZoom(marker.getPosition(), 15)); 
     map.getUiSettings().setAllGesturesEnabled(false); 
    } 

    @Override 
    public void onMarkerDrag(Marker marker) {} 

    @Override 
    public void onMarkerDragEnd(Marker marker) { 
     map.getUiSettings().setAllGesturesEnabled(true); 
    } 
}); 

센터 및 this answer을 사용할 수 있습니다 반경 LatLngBounds를 얻으려면.

+0

정말 고마워요! –

관련 문제