谷歌地图V3:防止标记缩放

时间:2013-03-27 18:57:25

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

我有一张谷歌地图,上面有一个标记。

我需要将标记设置为固定大小,例如10x10像素,即使我放大或缩小也需要重新发送。

这就是我现在所拥有的(而不是workig):

var marker = new google.maps.Marker({
    position: circleCenter,
    map: googleMap,
    icon: {
        path: google.maps.SymbolPath.CIRCLE,
        fillOpacity: 0.5,
        fillColor: 'ff0000',
        strokeWeight: 10,
        size: 5
    }
});

当地图缩放发生变化时,是否可以阻止缩放尺寸的标记?

1 个答案:

答案 0 :(得分:0)

谷歌没有开箱即用的方法来阻止标记缩放。

您可以使用Ground Overlay在地图上设置固定区域,然后附加图像。地面叠加的技巧是你必须知道边界对象的坐标,你可能必须想出一些计算边界的方法。在这个例子中,我只是将一个中心点扩展为一个矩形。

您也会放弃其他标记功能,因为此方法不使用标记对象(例如拖动,动画等),但叠加层确实有点击事件。

以下是概念验证: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);
}