2016-04-04 7 views
-1

Я пытаюсь размер мой маркер, изменяя масштаб изображения, но это, кажется, не работает здесь код для лучшего обзора:Как установить Google размер карты маркера динамически

function Icon(url) { 
    this.url = url; 
    this.scaledSize = new google.maps.Size(30, 30); // scaled size 
    //this.origin = new google.maps.Point(0,0); // origin 
    //this.anchor = new google.maps.Point(0, 0); // anchor 
} 

var icon1 = new Icon('img/marker-test.png'); 

     map.addListener('zoom_changed', function() { 
     if(map.zoom === 18){ 
      //marker.setIcon(test); 
      console.log('check'); 
      marker.scaledSize = new google.maps.Size(300, 300); 

     } else { 
      //marker.setIcon(icon1); 
     } 
    }); 

Кто-нибудь знает, как это исправить?

ответ

1

Прежде чем я отвечу, пару предложений:

  • Вы использовали map.zoom === 18, который не является действительным. Это должно быть map.getZoom() === 18
  • marker.scaledSize недействителен как scaledSize является собственностью объекта Icon. Ссылка: Icon Object Specification

    Если вам нужно установить размер маркера динамически, вам нужно указать изображение маркера (при создании маркера) с помощью свойства значка, а не как строку или оставить пустым (чтобы показать маркер по умолчанию).

Масштаб не работает с маркером по умолчанию. Поэтому вам нужно предоставить свой собственный образ для маркера.

Масштаб против Размер

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

Если вы просто масштабируете изображение и не задаете его размер, изображение маркера будет увеличивать размер заранее заданного размера. То есть некоторые части изображения маркера не будут видны.

Проще говоря, вот fiddle. Попробуйте изменить масштаб на 18 и более, а затем на 15 и ниже.

+0

Спасибо, человек, я полностью забыл указать свойство значка! И спасибо за дополнительную информацию :) Вы мне очень помогли – Sreinieren

Смежные вопросы