如何在使用Google Maps setIcon时更改标记大小

时间:2016-04-01 14:23:22

标签: javascript google-maps google-maps-api-3

我正在向地图添加标记,当我最初添加标记时,这些标记很小。然而,我然后循环它们并将它们中的一些更改为另一个具有相同大小但颜色不同的标记:

HTML

<div class="row">
  <div class="small-6 columns">
    <select id="state-select" class="">
          <option value="">SELECT A STATE</option>
          <option value="OH">Ohio</option>
          <option value="IL">Illinois</option>
          <option value="IN">Indiana</option>
          <option value="MO">Missouri</option>
          <option value="MI">Michigan</option>
    </select>
  </div>
</div>
<div id="map-canvas"></div>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places" type="text/javascript"></script>

JS:

$.each(stateMarkerArr, function(index, thisStateMarker) {
    if (thisStateMarker.state == stateCode) {
        thisStateMarker.setIcon('/img/example_img.png');        
        bounds.extend(thisStateMarker.getPosition());           
    } else {
        thisStateMarker.setIcon('/img/example_img2.png');       
    }
});

然而,标记的绘制尺寸较大:

enter image description here

如何在使用setIcon功能时动态设置标记的大小,以便我可以使这两个标记的大小相同?

我正在设置原始点:

var icon = {
    url: '/img/example_img.png',
    scaledSize: new google.maps.Size(28,50)
}
var marker = new google.maps.Marker({
    position: currLatlng,
    map: map,
    title: thisLocation.Store,
    state: currentState,
    icon: icon
});

然后尝试使用以下方式设置点:

$.each(stateMarkerArr, function(index, thisStateMarker) {
    if (thisStateMarker.state == stateCode) {
        var icon = {
            url: '/img/example_img.png',
            scaledSize: new google.maps.Size(28,50)
        }       
        thisStateMarker.setIcon(icon);
        bounds.extend(thisStateMarker.getPosition());           
    } else {
        var icon = {
            url: '/img/example_img2.png',
            scaledSize: new google.maps.Size(28,50)
        }       
        thisStateMarker.setIcon(icon);              
    }
});

2 个答案:

答案 0 :(得分:6)

您可以使用size对象的scaledSizegoogle.maps.Icon属性。请参阅the Docsthis example

var icon = {url:'/img/example_img.png', size: new google.maps.Size(20, 32)};
thisStateMarker.setIcon(icon);

答案 1 :(得分:0)

这是一项付费功能。您需要与Google联系,并询问他们需要多少费用;)