gpt4 book ai didi

javascript - 在谷歌地图上找到最近的引脚

转载 作者:行者123 更新时间:2023-11-29 16:19:20 24 4
gpt4 key购买 nike

我一直在使用 javascript Google Maps API 构建以下 map :http://springhillfarm.com.au/locations-map/现在,当用户在搜索栏中搜索他们的位置时,我想列出最近的 5 个图钉。

尝试进入像“North Epping”这样的郊区, map 将使用以下函数很好地四处移动:

$("#searchclick").click(function(){

var address = document.getElementById('searchbar').value;

var address = address + " Australia";

var geocoder = new google.maps.Geocoder();

geocoder.geocode( { 'address': address}, function(results, status) {

if (status == google.maps.GeocoderStatus.OK) {

var latitude2 = results[0].geometry.location.lat();
var longitude2 = results[0].geometry.location.lng();
var relocate = new google.maps.LatLng(latitude2, longitude2);
map.setCenter(relocate);

map.setZoom(12);

} //when status is OK

}); // geocode
});

但现在我真的希望它返回最近的 5 个引脚。

这在 javascript 中怎么可能?

最佳答案

我在您的生产代码中注意到 - 我可能会添加可以/应该进行大量优化! - 你有你的位置和一堆使用以下标记:

var myLatlng = new google.maps.LatLng(-37.5759571, 143.8064523);
var marker0 = new google.maps.Marker({ position: new google.maps.LatLng(-37.7994512, 144.9643374), map: map, title:"Toothpicks, 720 Swanston Street Carlton 3052 VIC", icon:image });
var marker1 = new google.maps.Marker({ position: new google.maps.LatLng(-31.9097004, 115.8485327), map: map, title:"Good Life Shop, Shop 7 Dog Swamp Shopping Centre, Yokine WA 6060", icon:image });

等...

如果您将这些标记放在一个数组中,例如:

var markers = [ marker0, marker1, etc... ]

一种简单的方法是使用一些毕达哥拉斯来计算您当前位置与所有标记之间的距离。像这样的东西:

// make a new array of markers since you probably don't want to modify the existing array
var markersByDistance = [];
for ( var i = 0; i < markers.length; i++ ) {
var marker = markers[i];

// using pythagoras does not take into account curvature,
// but will work fine over small distances.
// you can use more complicated trigonometry to
// take curvature into consideration
var dx = myLatlng.longitude - marker.longitude;
var dy = myLatlng.latitude - marker.latitude;
var distance = Math.sqrt( dx * dx + dy * dy );

markersByDistance[ i ] = marker;
markersByDistance[ i ].distance = distance;

}

// function to sort your data...
function sorter (a,b) {
return a.distance > b.distance ? 1 : -1;
}

// sort the array... now the first 5 elements should be your closest points.
markersByDistance.sort( sorter );

这一切可能毫无意义,因为 Google Maps API 可能会在 native 为您执行此操作。

关于javascript - 在谷歌地图上找到最近的引脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12257605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com