【发布时间】:2011-08-24 14:18:27
【问题描述】:
嗨,我正在尝试做似乎几乎不可能的事情……我正在尝试获取三个最近的位置标记对象……这甚至可能吗? .. 它不一定是 100% 准确的......但至少要做一些事情......我在网上找到并尝试的是:
function find_closest_marker( lat1, lon1 ) {
for(var y = 1; y < 4; y++){
var pi = Math.PI;
var R = 6371; //equatorial radius
for(var i=0;i<markers.length; i++ ) {
//alert(markers.length);
var closest = -1;
var distances = [];
var lat2 = points[i].lat().toFixed(5);
var lon2 = points[i].lng().toFixed(5);
var chLat = lat2-lat1;
var chLon = lon2-lon1;
var dLat = chLat*(pi/180);
var dLon = chLon*(pi/180);
var rLat1 = lat1*(pi/180);
var rLat2 = lat2*(pi/180);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(rLat1) * Math.cos(rLat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
distances[i] = d;
if ( closest == -1 || d < distances[closest] ) {
closest = i;
}
}
var markerImg = "";
if(markers[closest].markerType == 1){
markerImg="/files/billeder/../Templates/Designs/Ideal2011/images/Map/dot_red.jpg"
} else if(markers[closest].markerType == 2){
markerImg="/files/billeder/../Templates/Designs/Ideal2011/images/Map/dot_lblue.jpg"
}else if(markers[closest].markerType == 3){
markerImg="/files/billeder/../Templates/Designs/Ideal2011/images/Map/dot_dblue.jpg"
}else if(markers[closest].markerType == 4){
markerImg="/files/billeder/../Templates/Designs/Ideal2011/images/Map/dot_green.jpg"
}
$('.nearestPlace'+y).html(
"<img src='"+markerImg+"' alt='"+markers[closest].address+"' />"+
"<div class='CompanyName'><strong>"+markers[closest].title+"</strong></div>"+
markers[closest].address+"<br/>"+
markers[closest].postby+"<br/>"+
"Tlf.: "+markers[closest].phone+"<br/>"+
markers[closest].fax+
markers[closest].web+
markers[closest].email
);
//markers.pop(markers[closest]);
//points.pop(points[closest]);
//markers[closest] = "";
//points[closest]= "";
//alert(closest);
//markers.slice(closest,closest+1);
//points.slice(closest,closest+1);
//alert(markers[closest].title)
delete markers[closest];
delete points[closest]
}
}
您如何从代码中的一些 cmets 看到我尝试了许多不同的东西!他们似乎都不适合我!它给出了第一个位置(甚至不是正确的),然后就休息了,第二个和第三个什么都不做......
任何人都可以看到其中的错误吗?或者可能更了解或可以编写代码来获得所需的功能?
lat1, lon1 - 当前点的!
我在不大的区域有 300 个标记,所以脚本应该不难找到最近的 3 个。
【问题讨论】:
-
我在 v3 中创建了类似的东西,并且只有一个标记。也许你可以从中得到一些想法galengrover.com/projects/PHP-Google-Maps/examples/…
标签: javascript web-applications google-maps