如何在谷歌地图v3中创建在所有缩放级别具有相同半径的圆
How to create circle in google map v3 with same radius in all zoom level?
我正在研究从v2到v3的映射代码迁移。
在v2中,我已经在GProject和Overlay的帮助下创建了一个圆圈,它在所有缩放级别中看起来都是相同的大小。
在v3中,谷歌提供了Circle类,该类将在地图中创建圆圈,但在不同的缩放级别下会发生变化。
我想创建一个在所有缩放级别都具有相同大小的圆。
我想知道谷歌地图v3中的任何其他方法,我可以为所有缩放级别创建相同大小的圆圈。
提前谢谢。
要在屏幕上创建相同像素大小的圆圈(相对于地理坐标中的相同区域大小),传统上会使用带有圆形自定义图标的Marker。但是现在您可以更加灵活地使用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
我使用此代码来管理谷歌地图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图标比使用形状慢得多。我的方法是使用多段线,因为无论缩放级别如何,它们都显示相同的宽度。我将它的路径设置为中心的坐标。没有那么多的自定义选项(只有颜色、重量和不透明度),但也许它对你来说已经足够好了。
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,
});
相关文章:
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 谷歌地图 v3 缩放特定位置
- 如何重新启用禁用的谷歌地图v3拖放、缩放等
- 谷歌地图Api v3,使用地方库时的动态缩放级别
- 如何在谷歌地图V3上居中和缩放多个标记
- 如何在谷歌地图v3中创建在所有缩放级别具有相同半径的圆
- 谷歌地图API v3-缩放参数don'不起作用
- 谷歌地图API v3:缩放更改后是否有回调或事件侦听器
- 仅在缩放级别 15 谷歌地图 API v3 上显示标记
- 谷歌地图API v3 - 不同缩放级别的不同标记/标签
- 根据屏幕/设备宽度设置谷歌地图API V3缩放级别
- Google Maps API v3 禁用捏合以缩放 iPad Safari
- 谷歌地图v3缩放控件未显示
- Google API v3适用于所有标记的地图缩放和边界
- 谷歌地图v3缩放闪烁
- 谷歌地图API v3:如何设置缩放级别和地图中心到用户提交的位置
- 隐藏标记出现后缩放- API谷歌地图V3
- 谷歌地图API V3:缩放状态与大多数标记
- 是否可以修改Google Maps V3中的缩放过渡?
- Google maps API V3:如何为平移设置相同的边界,无论缩放级别如何