0

Я создаю маркеры на основе моего местоположения, и я хотел бы сделать маркеры перетаскиваемыми в пределах 1 км от этого места.Сделать маркеры Google Maps перетаскиваемыми в пределах региона/области?

Итак, в основном я хочу знать, как сделать маркер перетаскиваемым только в определенной области/области, а не всей карте.

Спасибо

ответ

1

Вы должны определить границы и проверить, если новое положение находится за пределами в onDragListener маркера: если новое положение находится за пределами вы можете сбросить маркер до последнего действительное положение или делать то, что вы хотите.

Чтобы соответствовать, если маркер находится или находится внутри границ, вы должны использовать метод contains объекта LatLngBounds.

Что-то вроде этого:

LatLngBounds bounds; 
LatLngBounds.Builder builder = new LatLngBounds.Builder(); 

// You construct your bounds in a way like this 
builder.include(new LatLng(latitude1, longitude1)); 
builder.include(new LatLng(latitude2, longitude2)); 
builder.include(new LatLng(latitude3, longitude3)); 
// etc 

bounds = builder.build(); 

googleMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() { 
    @Override 
    public void onMarkerDragStart(Marker marker) { 

    } 

    @Override 
    public void onMarkerDrag(Marker marker) { 

    } 

    @Override 
    public void onMarkerDragEnd(Marker marker) { 

     if (bounds.contains(marker.getPosition())) { 
      // cast your spell 
     } else { 
      // you can't drag here 
     } 

    } 
}); 
+0

Если решение является правильным, пожалуйста, установите его как принято. –