缩小时防止标记缩放

时间:2017-01-14 09:57:54

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

我希望Google地图标记在特定缩放级别上具有固定大小,如下例所示:http://jsfiddle.net/bryan_weaver/4rxqQ/

function initialize() {
var map;
var centerPosition = new google.maps.LatLng(38.713107, -90.42984);
var options = {
    zoom: 9,
    center: centerPosition,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map($('#map')[0], options);

var icon = 'https://www.google.com/mapfiles/marker_black.png';
var iconBounds = constructBounds(38.713107, -90.42984);
var staticOverlay = new google.maps.GroundOverlay(icon, iconBounds);
staticOverlay.setMap(map);
}

function constructBounds(lat, lng){
var sw = new google.maps.LatLng(lat - .03, lng - .025)
var ne = new google.maps.LatLng(lat + .03, lng + .025)
return new google.maps.LatLngBounds(sw, ne);
}

google.maps.event.addDomListener(window, 'load', initialize);

但是有没有比上面的Jsfiddle更流畅的解决方案?

1 个答案:

答案 0 :(得分:2)

根据您的评论:是的,您可以使用标记对其进行解决,但是没有“即用型”和#39; MarkerOptions中的选项。您可以添加缩放更改侦听器并为标记图标设置新比例,而不是此操作。而不是GroundOverlay

System.Windows.Forms

你会使用标记

var icon = 'https://www.google.com/mapfiles/marker_black.png';
var iconBounds = constructBounds(38.713107, -90.42984);
var staticOverlay = new google.maps.GroundOverlay(icon, iconBounds);
staticOverlay.setMap(map);

然后,您只需添加缩放更改侦听器并根据缩放级别计算新大小:

var icon = 'https://www.google.com/mapfiles/marker_black.png';
var marker = new google.maps.Marker({
    position: {
        lat: 38.713107,
        lng: -90.42984
    },
    map: map,
    icon: icon
});

当然,您可以更改计算,以便图标大小以不同的方式更改。我刚刚创建了一个简单的例子。我刚刚更新了your fiddle