我正在进行从v2到v3的地图代码迁移。
在v2中,我使用GProjection和Overlay创建圆形,这将在所有缩放级别下看起来相同大小。
在v3中,Google提供了Circle类来创建地图上的圆形,但它会在不同的缩放级别下改变大小。
我希望创建一个在所有缩放级别下都具有相同大小的圆形。
我想知道在Google Maps v3中是否有其他方法可以创建大小不变的圆形。
提前感谢。
我正在进行从v2到v3的地图代码迁移。
在v2中,我使用GProjection和Overlay创建圆形,这将在所有缩放级别下看起来相同大小。
在v3中,Google提供了Circle类来创建地图上的圆形,但它会在不同的缩放级别下改变大小。
我希望创建一个在所有缩放级别下都具有相同大小的圆形。
我想知道在Google Maps v3中是否有其他方法可以创建大小不变的圆形。
提前感谢。
要在屏幕上创建相同像素大小的圆(与地理坐标中相同区域大小的圆不同),传统做法是使用自定义图标为圆形的标记。但现在,您可以更加灵活地使用v3中相对较新的Symbols。
var marker = new google.maps.Marker({
position: new google.maps.LatLng(-122.5,47.5),
icon: {
path: google.maps.SymbolPath.CIRCLE,
fillOpacity: 0.5,
fillColor: '#ff0000',
strokeOpacity: 1.0,
strokeColor: '#fff000',
strokeWeight: 3.0,
scale: 20 //pixels
}
});
另外,您也可以使用这些符号制作酷炫的动画效果: http://googlegeodevelopers.blogspot.com/2012/06/powerful-data-visualization-with.html
我使用以下代码来管理Google Map V3上的缩放圆:
google.maps.event.addListener(iMap.map, 'zoom_changed', function () {
for (var i = 0; i < iMap.circle.length; i++) {
var p = Math.pow(2, (21 - iMap.map.getZoom()));
iMap.circle[i].setRadius(p * 1128.497220 * 0.0027);
}
menu.hide();
});
我尝试了jlivni的答案,但是使用svg图标比使用形状要慢得多。我的方法是使用折线,因为它们在任何缩放级别下都显示相同的宽度。我将其路径设置为中心的坐标。虽然customization选项不如其他方式(只有颜色、重量和不透明度),但也许对你来说足够好用。
let circle = new google.maps.Polyline({
map: gmap,
path: [{ lat: center.lat, lng: center.lng }, { lat: center.lat, lng: center.lng }],
strokeColor: '#FF0000',
strokeWeight: 5,
});