Пользовательский значок маркера Google Maps v3 не сохраняет свою позицию на карте - PullRequest
7 голосов
/ 17 февраля 2012

Разработка с использованием Google Maps v3.

По какой-то причине мой пользовательский значок маркера «меняет» свою позицию при уменьшении масштаба.Похоже, что у него есть какое-то свойство «padding», которое не изменяется вместе с масштабированием.

Это означает, что его положение корректно при максимальном увеличении (18), но если я изменю значение масштабирования, оно «перемещается"немного выше, и это создает проблемы при меньших значениях масштабирования, потому что похоже, что он не находится в той же позиции, что и он.

Маркер определен как:

var image = new google.maps.MarkerImage('img/antennas/img.png',new google.maps.Size(100, 100));

ЭтоМожет быть, может помочь: значок маркера имеет квадратную форму, 100x100 пикселей, и его центр находится в середине изображения, а не внизу, как «нормальные» маркеры.

ОБНОВЛЕНИЕ: нужно ли мнесделать что-то со свойством якоря?

Ответы [ 4 ]

5 голосов
/ 17 февраля 2012

Вы должны установить привязку маркера.По умолчанию центральное дно.

См. http://code.google.com/apis/maps/documentation/javascript/reference.html#MarkerImage

4 голосов
/ 07 ноября 2013

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

В этом примере я использую метку, представляющую собой круг с точкой в ​​середине, поэтому я всегда хочу, чтобы она была в центре.

Пример

 var marker_image = new google.maps.MarkerImage(
        '../Media/icon_maps_marker.png',
         null,
         // The origin for my image is 0,0.
         new google.maps.Point(0, 0),
         // The center of the image is 50,50 (my image is a circle with 100,100)
         new google.maps.Point(50, 50)
     );
    var marker = new google.maps.Marker({
        clickable: true,
        map: map,
        position: center_location,
        icon: marker_image,
    });
1 голос
/ 17 февраля 2012

Исходя из вашего описания «отступов», это звучит так, как будто это проблема с позиционированием вашего MarkerImage. Попробуйте настроить свойство привязки MarkerImage. По умолчанию якорь находится в нижней части вашего изображения. Если вы хотите, чтобы изображение было отцентрировано, вам придется переместить якорь на половину размера изображения, чтобы центрировать его.

См. http://code.google.com/intl/no/apis/maps/documentation/javascript/reference.html#MarkerImage для справки.

0 голосов
/ 10 февраля 2017

См. Свойство привязки в значке: anchor: new google.maps.Point (0, 0)

var icon = {
    url: image,
    anchor: new google.maps.Point(0, 0)
  };

  marker = new google.maps.Marker({
    position: Latlng,
    map: map,
    icon: icon,
    optimized: false
  });
...