gpt4 book ai didi

javascript - 在多个边界中搜索 map 坐标

转载 作者:行者123 更新时间:2023-11-28 08:31:44 25 4
gpt4 key购买 nike

我有一些代码要求用户提供地址并使用 GoogleMaps API 返回该地址的地理编码纬度/经度。我已经将其设置为查询这些坐标是否落在预先确定的边界内。我想做的是拥有多个边界并能够搜索它们并返回结果。例如,我会有一些 JSON 数据或其他类型的数组,其中包含 SW_LatLng、NE_LatLng 和答案。所以我的查询将使用以下函数,如果 true 返回答案。我的问题是如何循环多个边界并返回结果。

bounds.contains(new google.maps.LatLng(latitude,longitude));

这是我已有的代码:

function codeAddress() {
var bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(37,-109),
new google.maps.LatLng(41, -102)
);
var geocoder = new google.maps.Geocoder();
var address = document.getElementById('address').value;

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

if (status == google.maps.GeocoderStatus.OK) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();

}
var center = bounds.getCenter();
var x = bounds.contains(new google.maps.LatLng(latitude,longitude));

if (x) { alert('In Colorado')} else { alert('Outside Colorado')};

});
}

<h3>Is your Address in Colorado?</h3>
<input id="address" type="textbox" style="width:60%">
<input type="button" value="Find" onclick="codeAddress()">

我在 CodePen(如 JSFiddle)中设置了这个供您使用。

CodePen Link

感谢任何帮助。另外,隐藏数据的最佳方法是什么?

这是 JSFiddle 链接 JSFiddle Link

最佳答案

您是否考虑过使用多边形来定义边界?然后使用几何库中的谷歌地图 API containsLocation 方法( https://developers.google.com/maps/documentation/javascript/examples/poly-containsLocation )来确定该点是否位于边界内?

您似乎仅限于矩形区域(这可能足以满足您的目的,我不知道我只是在提出建议)。

无论哪种方式,正如您所说,您需要循环遍历纬度/经度边界对数组(将此称为latLngArray)。

function codeAddress() {

var geocoder = new google.maps.Geocoder();
var address = document.getElementById('address').value;

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

if (status == google.maps.GeocoderStatus.OK) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();

}

var latLngArrayLength = latLngArray.getLength();

for (i=0; i<latLngArrayLength; i++) {
var bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(latLngArray[i].latSW, latLngArray[i].lngSW)
new google.maps.LatLng(latLngArray[i].latNE, latLngArray[i].lngNE)
);

var center = bounds.getCenter(); //what is this for??
var x = bounds.contains(new google.maps.LatLng(latitude,longitude));

if (x) {
alert('In ' + latLngArray[i].boundaryName); //not sure what you want to return exactly
return latLngArray[i].boundaryName;
}
}
});
}

关于javascript - 在多个边界中搜索 map 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21770494/

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