我们如何在距离500米处放置两个标记,假设第一个标记的latLng为伦敦(51,0),第二个标记距离此标记500米。我曾尝试过但无法找到并回答它......任何想法
答案 0 :(得分:0)
纬度是60海里,但显然是经度窗外。
因此,听起来你需要反过来使用大圆距离方程。
GDC为您提供地球上各点之间的距离 - 它很复杂,因为它不是直线,因为您必须协商球体的曲率。
如果你可以向后工作GDC,那么你就可以计算距当前距离500米的LatLong。
(显然这只适用于鹦鹉。道路后面的路线会有所不同.Google路线服务会以IIC为单位返回距离。)
答案 1 :(得分:0)
我查看了Google Maps API,看来我的回答确实是错误的。我没有注意到latLng不适用于长度而是纬度和经度(看起来好像我已经忘记了地球不平坦:))。使用this漂亮的网站,我能够找到更好的解决方案:
var position = new google.maps.LatLng(51.517289, -0.130463);
var latlngs = [];
var map;
// distance from position in km
var d = 5;
// Earth radius
var R = 6372;
function initialize()
{
var mapOptions = { zoom: 12,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: position };
map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
}
function dropMarkers()
{
var lat1Deg = position.lat();
var lon1Deg = position.lng();
var lat1Rad = lat1Deg.toRad();
var lon1Rad = lon1Deg.toRad();
latlngs.push(new google.maps.Marker({
position: position,
map: map,
draggable: false,
animation: google.maps.Animation.DROP}));
for (var brngDeg = 0; brngDeg < 360; brngDeg+=20)
{
brngRad = brngDeg.toRad();
var lat2Rad = Math.asin( Math.sin(lat1Rad)*Math.cos(d/R) +
Math.cos(lat1Rad)*Math.sin(d/R)*Math.cos(brngRad) );
var lon2Rad = lon1Rad +
Math.atan2(Math.sin(brngRad)*Math.sin(d/R)*Math.cos(lat1Rad),
Math.cos(d/R)-Math.sin(lat1Rad)*Math.sin(lat2Rad));
lat2Deg = lat2Rad.toDeg();
lon2Deg = lon2Rad.toDeg();
latlngs.push(new google.maps.Marker({
position: new google.maps.LatLng(lat2Deg,lon2Deg),
map: map,
draggable: false,
animation: google.maps.Animation.DROP}));
}
}
if (typeof(Number.prototype.toRad) === "undefined")
{
Number.prototype.toRad = function()
{
return this * Math.PI / 180;
}
}
if (typeof(Number.prototype.toDeg) === "undefined")
{
Number.prototype.toDeg = function()
{
return this * 180 / Math.PI;
}
}