我一直在使用 Google Maps API 中的 Geocoder 服务来为我的地图上的搜索框提供动力。我希望允许用户按地址、城市和坐标以及可能支持的任何其他内容自由搜索。直到最近,如果我将纬度/经度坐标传递给地理编码器,它只会返回这些特定坐标的结果,但最近它已更改为进行反向查找并为我提供离坐标最近的地址。我实际上想要直接在坐标上的位置,因为这是最相关的。
任何想法如何从搜索框中解析出各种输入形式的坐标或让地理编码器恢复其早期行为?
我一直在使用 Google Maps API 中的 Geocoder 服务来为我的地图上的搜索框提供动力。我希望允许用户按地址、城市和坐标以及可能支持的任何其他内容自由搜索。直到最近,如果我将纬度/经度坐标传递给地理编码器,它只会返回这些特定坐标的结果,但最近它已更改为进行反向查找并为我提供离坐标最近的地址。我实际上想要直接在坐标上的位置,因为这是最相关的。
任何想法如何从搜索框中解析出各种输入形式的坐标或让地理编码器恢复其早期行为?
您不能只使用正则表达式来检查输入的输入是否是 lat/lng 对吗?然后,如果它解析该对并直接导航到坐标。就像是:
var latLngRegex = /^(\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)$/; //Regex for checking that it is a latlng pair that has been entered
var address = document.getElementById("txt_googlesearch").value;
if (address=='' || address=='Search') {
return;
}
if (latLngRegex.test(address)) //Run the regex against the entered value
{
var coords = address.split(","); //Split the address into 2 decimal values
var mapPoint = new GLatLng(parseInt(coords[0]), parseInt(coords[1])); //Create a gLatLng from the split values
map.setCenter(mapPoint); //Move the map to the entered location
return;
}
//Call Geocoder as before
我不确定为什么它会更改为显示反向地理编码,而没有看到代码。但是,我建议改用 Places API 库的自动完成功能。