Android Google Maps V2 меняет значок моего местоположения

17

Я использую пользовательский значок в своем приложении для текущего местоположения пользователя и хочу сохранить его таким образом при обновлении до новой библиотеки Google Maps.

В библиотеке Google Maps v1 я расширил MyLocationOverlay и перезаписал метод drawMyLocation, чтобы нарисовать свой пользовательский значок там.

GoogleMap позволяет текущее местоположение с помощью метода setMyLocationEnabled, но, насколько мне известно, нет возможности его настроить.

Кто-нибудь знает, как это сделать на v2?

    
задан Robert Estivill 12.12.2012 в 18:55
источник

3 ответа

3

Итак, я просто подумал, что если вы не добавите заголовок или фрагмент, маркер не будет влиять на событие клика и будет действовать как наложение изображения. Несмотря на то, что это не идеально, это соответствует моим потребностям.

private Marker marker = mMap.addMarker(new MarkerOptions()
                    .position( latLng)
                    .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));

Спасибо всем

    
ответ дан Robert Estivill 03.01.2013 в 03:27
13

Создайте маркер в конструкторе карты, который использует пользовательский значок.

_myLocation = mMap.addMarker(new MarkerOptions()
                      .position(MAP_CENTER)
                      .title("My Location")
                      .icon(BitmapDescriptorFactory.fromResource(R.drawable.mylocation)));

Внедрение прослушивателя с измененным местоположением, Ссылка

Обновить местоположение маркера при вызове провайдера:

public void onLocationChanged (Location location)
{
    _myLocation.position(location); //May have to convert from location to LatLng
}
    
ответ дан javram 13.12.2012 в 07:56
  • Именно так оно и было сделано в библиотеке V1. В V2 вы не обрабатываете MapView внутри действия. Более того, на классе V2 нет класса Overlay. developers.google.com/maps/documentation/android/reference/com/... –  Robert Estivill 13.12.2012 в 15:31
  • Плохо, я не понимал, что вы имеете в виду версию Google Play. См. Мой обновленный ответ выше. Это хорошо, потому что сейчас очень похоже на то, как ведет себя Javascript-версия Google Maps. –  javram 14.12.2012 в 00:05
  • @RobertEstivill: AFAIK, это ваш единственный вариант, по крайней мере, придерживаясь документированного / поддерживаемого поведения. –  CommonsWare 19.12.2012 в 20:32
  • Два первых комментария (включая этот мой) устарели, пожалуйста, удалите его. –  Felipe 20.06.2013 в 16:07
0

Определенный способ показать пользовательский значок в текущем местоположении. Оформить заказ Ссылка , вы получите больше информации, чтобы настроить свой значок на карте.

Попробуйте выполнить приведенный ниже код:

 private static final LatLng MELBOURNE = new LatLng(-37.81319, 144.96298);
 private Marker melbourne = mMap.addMarker(new MarkerOptions()
                        .position(MELBOURNE)
                        .title("Melbourne")
                        .snippet("Population: 4,137,400")
                        .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
    
ответ дан GrIsHu 21.12.2012 в 09:51
  • Это можно сделать, но оно несовместимо с текущим механизмом MyLocation. Другими словами, вы можете использовать маркер без всякой информации о окне, но вам придется вручную реализовать LocationListener, чтобы вы могли перемещать местоположение. Вы не можете повторно использовать встроенные возможности определения местоположения –  Robert Estivill 21.12.2012 в 15:13
  • Это единственный способ AFAIK. Пожалуйста, разместите код, чтобы я мог представить вам вашу проблему. Спасибо. –  GrIsHu 22.12.2012 в 09:49