【发布时间】:2014-09-22 09:29:01
【问题描述】:
如何使用 google map api 实现这一点?
http://i59.tinypic.com/6dzb88.jpg
每边的米。
如果我右键点击谷歌地图距离,我可以做这样的事情: http://i57.tinypic.com/21e7w1.jpg
基本上,我希望我绘制的多边形看起来像第一张或第二张图像。 (我需要标签)这可能吗?
【问题讨论】:
标签: javascript google-maps polygon
如何使用 google map api 实现这一点?
http://i59.tinypic.com/6dzb88.jpg
每边的米。
如果我右键点击谷歌地图距离,我可以做这样的事情: http://i57.tinypic.com/21e7w1.jpg
基本上,我希望我绘制的多边形看起来像第一张或第二张图像。 (我需要标签)这可能吗?
【问题讨论】:
标签: javascript google-maps polygon
我不确定我是否正确理解了您的问题... 但是球体上两个经度/纬度点之间的距离可以使用http://en.wikipedia.org/wiki/Haversine_formula来计算
Javascript 实现
rad = function(x) {return x*Math.PI/180;}
distHaversine = function(p1, p2) {
var R = 6371; // earth's mean radius in km
var dLat = rad(p2.lat() - p1.lat());
var dLong = rad(p2.lng() - p1.lng());
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(rad(p1.lat())) * Math.cos(rad(p2.lat())) * Math.sin(dLong/2) * Math.sin(dLong/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
return d.toFixed(3);
}
我认为谷歌地图 api 中也有一个实现
google.maps.geometry.spherical.computeDistanceBetween (latLngA, latLngB);
如果您在绘制多边形时遇到问题,请查看此处的谷歌地图示例 https://developers.google.com/maps/documentation/javascript/examples/polygon-simple
您可能需要为标记做一些自定义文本叠加。
也许使用来自https://code.google.com/p/google-maps-utility-library-v3/ 的MapLabel 类:
var mapLabel = new MapLabel({
text: 'Test',
position: new google.maps.LatLng(50,50),
map: map,
fontSize: 20,
align: 'right'
});
或者您可以简单地创建一些自定义多边形并绘制它们。可能对所有数字都有点工作。
【讨论】: