[英]Close markers with google maps using Lat and Lng
我正在使用Google Maps API(vs3)编写在线地图。
我正在做的是在数据库中存储位置(经纬度)并将其添加到initialize()上的地图中-根据位置放置标记。 到现在为止还挺好。
现在,我有一个显示我的位置(或用户定义的位置)的函数。 我想显示在111 km = 1 lat / lng内的地方 。 我怎样才能做到这一点?
只是为了向您展示我的意思:
函数showPlaceCloseBy(lat,lng){
var myLat=lat;
var myLng=lng;
for (var i=0; i < pins.length; i++) {
// HERE WE FIND WHETHER THE PLACE IS CLOSE ENOUGH
returnDistance(myLat, myLng, pins[i],i);
}
}
function returnDistance(myLat,myLng,pinToCompare,i){
// PIN
var calcLat= myLat-pinToCompare.position.hb; // IS THIS RIGHT?
var calcLong = myLng-pinToCompare.position.ib; // IS THIS RIGHT?
// HERE I NEED TO DO THE CALCULATION AND RETURN THE PIN NAME.
}
因此,现在我需要在myLat和pinLat之间进行计算(可能是减法-?-)。 谁能帮我?
谢谢大家
Google Maps API v3 球形几何库具有以下方法:
computeDistanceBetween(from:LatLng,to:LatLng)-数字-返回两个LatLng之间的距离。
它返回两个LatLng对象之间的距离(以米为单位)。
(未测试)
var closeDistance = 111000; // 111 km
function showPlaceCloseBy(lat,lng){
var myLocation = new google.maps.LatLng(lat, lng);
closePins = [];
for (var i=0; i < pins.length; i++) {
// HERE WE FIND WHETHER THE PLACE IS CLOSE ENOUGH
if (calculateDistanceBetween(myLocation, pins[i].getPosition()) < closeDistance)
{
closePins.push(pins[i]);
}
}
return closePins;
}
// Note: do not use undocumented properties like .hb, .ib; they can and do change.
var calcLat= myLat-pinToCompare.position.hb; // IS THIS RIGHT?
var calcLong = myLng-pinToCompare.position.ib; // IS THIS RIGHT?
这应该只是一个简单的距离计算http://www.purplemath.com/modules/distform.htm
所以你的代码是
return Math.sqrt( Math.pow( calcLat, 2 ) + Math.pow( calcLong, 2 ) )
您将在这里找到所有内容: http : //www.movable-type.co.uk/scripts/latlong.html
具有各种精度,方向(方位/方位角),一切的距离;-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.