Я отображаю карту Google в приложении для Android с двумя маркерами. В методе onMapReady все работает хорошо, карта отображается и отображаются маркеры с соответствующими растровыми изображениями и информацией.
Я даже реализовал границу масштабирования, используя CameraUpdateFactory () *Функция 1006 * с LatLngBounds . Опять же, до этого момента, все работает хорошо и как ожидалось . Вот фрагмент:
override fun onMapReady(googleMap: GoogleMap?) {
myGoogleMap = googleMap
// myMapMarker is a global variable of type MarkerOptions
// the options are set only once here and never changed elsewhere in the code
myMapMarker = MarkerOptions()
.position(LatLng(34.1478, 118.1445))
.title("My Location")
.snippet("Description of my location...")
.icon(BitmapDescriptorFactory.fromBitmap(pinBitmap))
// myMapMarker is added to the map only once here and
// never removed or added again elsewhere in the code
myGoogleMap?.addMarker(myMapMarker)
}
Однако, когда я пытаюсь переместить маркер, используя маркер setPosition функция (просто позиция в Kotlin) , положение маркера изменяется, но штифт остается в исходном положении, при этом информационное окно все еще функционирует. Я знаю, что положение маркера обновляется, потому что следующий вызов функции zoom to bounds увеличивает новые границы.
// only one attempt is made to move myMapMarker here
// the marker location is successfully changed
// >>> evidenced by println(myMapMarker?.location)
// the marker icon/pin is not re-positioned
myMapMarker?.position(LatLng(mapData.latitude, mapData.longitude))
Я прочитал, что маркеры должны быть переставлено и не удалено и добавлено снова. Итак, есть ли пропущенный шаг в том, чтобы правильно расположить маркер?
Я также пытался понизить API Карт Google Play с 17 до 16, но все еще получал те же результаты.
TIA.
РЕДАКТИРОВАТЬ: Добавление снимка экрана, чтобы проиллюстрировать проблему
![enter image description here](https://i.stack.imgur.com/dYiZP.jpg)
Оригиналмаркер был на 452 Ford Place (красный маркер). После выполнения setPosition () красный маркер должен появиться там, где синий маркер, но это не так. Он остается на 452 Ford Place.