Маркер карты Google Android неправильно перемещается - PullRequest
0 голосов
/ 12 ноября 2019

Я отображаю карту 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

Оригиналмаркер был на 452 Ford Place (красный маркер). После выполнения setPosition () красный маркер должен появиться там, где синий маркер, но это не так. Он остается на 452 Ford Place.

1 Ответ

0 голосов
/ 12 ноября 2019

Ответ все время смотрел мне в лицо.

Я добавил MarkerOptions на карту вместо Marker . Вот почему данные позиции (параметры маркера) изменились, но не сама позиция маркера.

Проблема решена!

...