Изменить размер Google Maps маркер значок изображения

когда я загружаю изображение в свойство icon маркера, он отображает его исходный размер, который намного больше, чем должен быть.

Я хочу изменить размер на стандартный до меньшего размера. Как лучше всего это сделать?

код:

function addMyPos(latitude,longitude){
  position = new google.maps.LatLng(latitude,longitude)
  marker = new google.maps.Marker({
    position: position,
    map: map,
    icon: "../res/sit_marron.png"
  });
}

5 ответов


если исходный размер 100 x 100, и вы хотите масштабировать его до 50 x 50, используйте scaledSize вместо Size.

var icon = {
    url: "../res/sit_marron.png", // url
    scaledSize: new google.maps.Size(50, 50), // scaled size
    origin: new google.maps.Point(0,0), // origin
    anchor: new google.maps.Point(0, 0) // anchor
};

var marker = new google.maps.Marker({
    position: new google.maps.LatLng(lat, lng),
    map: map,
    icon: icon
});

Как упоминалось в комментариях, это обновленное решение в пользу объекта Icon с документацией.

использовать объект

var icon = {
    url: "../res/sit_marron.png", // url
    scaledSize: new google.maps.Size(50, 50), // scaled size
    origin: new google.maps.Point(0,0), // origin
    anchor: new google.maps.Point(0, 0) // anchor
};

 posicion = new google.maps.LatLng(latitud,longitud)
 marker = new google.maps.Marker({
  position: posicion,
  map: map,
  icon: icon
 });

MarkerImage устарел для Icon

до версии 3.10 Google Maps JavaScript API, сложные иконки были определены как объекты MarkerImage. Добавлен литерал объекта Icon в 3.10, и заменяет MarkerImage от версии 3.11 и далее. Икона объектные литералы поддерживают те же параметры, что и MarkerImage, позволяя чтобы легко преобразовать MarkerImage в значок, удалите конструктор, обертывающий предыдущие параметры в {}, и добавление имена каждого параметра.

код Филиппа теперь будет:

 var icon = {
     url: "../res/sit_marron.png", // url
     scaledSize: new google.maps.Size(width, height), // size
     origin: new google.maps.Point(0,0), // origin
     anchor: new google.maps.Point(anchor_left, anchor_top) // anchor 
 };

 position = new google.maps.LatLng(latitud,longitud)
 marker = new google.maps.Marker({
  position: position,
  map: map,
  icon: icon
 });

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

изображение 500x500 будет отображаться на карте больше, чем изображение 50x50.

Программирование не требуется.


удалить origin и якорь будет более регулярное изображение

  var icon = {
        url: "image path", // url
        scaledSize: new google.maps.Size(50, 50), // size
    };

 marker = new google.maps.Marker({
  position: new google.maps.LatLng(lat, long),
  map: map,
  icon: icon
 });