Есть ли способ изменить значок маркера Google Maps Android API v2 во время выполнения без удаления/повторного добавления маркера, который я хочу изменить? Могу ли я применить к нему преобразования (например, вращение)?
Спасибо.
Есть ли способ изменить значок маркера Google Maps Android API v2 во время выполнения без удаления/повторного добавления маркера, который я хочу изменить? Могу ли я применить к нему преобразования (например, вращение)?
Спасибо.
В настоящее время вы не можете ни изменить маркер во время выполнения, ни применить к нему вращение.
Однако вы можете использовать обходной путь - я работаю над классом BlinkingMarker, где мне нужно настроить непрозрачность изображения маркера во время выполнения.
Единственным решением на данный момент является создание растровых изображений с различным поворотом, а затем их периодическое добавление/удаление. Проблема с этим решением заключается в том, что добавление/удаление маркеров занимает много памяти, что приводит к постоянной сборке мусора. Лучший и более плавный обходной путь — создать все свои изображения заранее и сразу добавить их все на карту. После этого вы можете использовать функцию Marker.setVisible(boolean)
для отображения того, что вам нужно в данный момент.
Предостережение: измерьте свои растровые изображения, прежде чем делать это, потому что добавление большого количества больших растровых изображений может привести к очень большому объему памяти вашего приложения.
Вы можете посмотреть мой обходной путь здесь: https://github.com/balazsbalazs/blinking-marker-mapsv2
Это маркер, который мигает (меняет непрозрачность растрового изображения), но к этим же строкам можно применить любое преобразование.
Я могу легко менять значки маркеров во время выполнения после обновления до Google Play Services Rev 7
, теперь
Marker.setIcon (значок BitmapDescriptor)
доступен, ранее я удалял и добавлял маркер, чтобы изменить его цвет.
В документах этот вопрос очень ясен:
Icon A bitmap that's displayed in place of the default marker image. You can't change the icon once you've created the marker.
Если вы хотите изменить внешний вид маркера, у вас есть несколько вариантов. Один из них, как вы заметили, удалить маркер и добавить еще один. Другой способ — разместить несколько маркеров в одном месте и выбрать, какой из них будет видимым в любой момент времени.
Могу ли я применить к нему преобразования (например, вращение)?
Вы можете применить любое преобразование к изображению, прежде чем использовать его для создания маркера.
setIcon()
- person Arch1tect; 05.06.2013
В выпуске Google Maps Android v2 от сентября 2013 г. теперь есть новый setRotation()
для маркеров, а также новый setFlat()
.
Вот описание новых функций от Google:
Дайте вашим маркерам ощущение направления
Мы добавили свойство поворота маркера, чтобы вы могли вращать маркер вокруг его опорной точки. Новое плоское свойство позволяет сделать так, чтобы маркер лежал ровно на поверхности карты, а не высовывался перед камерой. Эти два новых свойства особенно полезны для указания направлений по компасу, когда карта повернута или наклонена.
Вот статья с описанием новые функции.
Чтобы изменить выбранный значок маркера во время выполнения, просто добавьте
@Override
public boolean onMarkerClick(Marker marker) {
Marker.setIcon (BitmapDescriptor icon);
}