我有一张谷歌地图,上面有一个标记。
我需要将标记设置为固定大小,例如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
}
});
当地图缩放发生变化时,是否可以阻止缩放尺寸的标记?
答案 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);
}