Javascript Google Maps API v3返回零结果,但Maps.Google.com显示良好
这件需要帮忙 我正在使用GoogleMapsAPIv3获取存储在数据库中的人类可读地址的纬度和经度,然后在GoogleMap画布上放置一个标记。很简单 我遇到的问题是,某些地址正在回退-->零结果的状态代码 如果我在maps.google.com中输入相同的地址,他们会找到特定的区域,并用一个近似的标记将其映射 我数据库中的一些地址不具体,这意味着它们可能没有邮政编码和/或可能没有城市,但都有一个省/地区和国家。同样需要注意的是,它们都没有街道地址 一些人类可读的地址可能有破折号(-)、空格()、撇号(')和逗号(,) 回退零结果的地址示例如下:Javascript Google Maps API v3返回零结果,但Maps.Google.com显示良好,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,这件需要帮忙 我正在使用GoogleMapsAPIv3获取存储在数据库中的人类可读地址的纬度和经度,然后在GoogleMap画布上放置一个标记。很简单 我遇到的问题是,某些地址正在回退-->零结果的状态代码 如果我在maps.google.com中输入相同的地址,他们会找到特定的区域,并用一个近似的标记将其映射 我数据库中的一些地址不具体,这意味着它们可能没有邮政编码和/或可能没有城市,但都有一个省/地区和国家。同样需要注意的是,它们都没有街道地址 一些人类可读的地址可能有破折号(-)、空格()
Soul-t'ukpyolsi, Korea, South
在这个特定的例子中,国家名称中有逗号和空格,地区名称中也有撇号和破折号
下面是我正在使用的Javascript代码:
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&key=MYKEY&sensor=false"></script>
<script>
function initialize() {
var myLatlng = new google.maps.LatLng(<?php echo $lat; ?>,<?php echo $long; ?>);
var mapOptions = {
zoom: 5,
center: myLatlng
}
var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
非常感谢您的帮助 该示例可能由于拼写错误而导致问题。以下是: 韩国首尔-东京 不返回零结果
根据您的代码,破折号和撇号不应导致问题。请提供另一个例子 你为什么认为这个地址在谷歌地图中有效?请提供一个链接,指向一个好结果(我得到)。请相信问题的根源是拼写错误,它应该是-->首尔-t'ukpyolsi,韩国,韩国。。。相信它在谷歌地图上是有效的,因为在Maps.Google.com上输入“Soul-t'ukpyolsi,Korea,South”(拼写错误)确实会在首尔上打上标记。仅通过JSONSame生成零结果:
Seoul-t'ukpyolsi,Korea,South
提供完整的JSON结果。看起来拼写错误是问题的根源。谢谢你的帮助。尽管如此,当在Maps.Google.com中输入“Soul-t'ukpyolsi,Korea,South”(拼写错误)时,它会在首尔正确地放置一个标记。我有没有办法复制同样的效果来提供正确拼写的JSON结果?我并没有因为拼写错误而得到零分结果。我也问了同样的问题,但还没有找到谷歌提供的检查方法。防止这种情况发生的一种可能的方法是在用户输入或提交时检查用户输入,并对照ZERO_结果进行检查,并指出存在拼写错误。但是,它很可能会计入您的查询计数,因此并不理想。或者,您可以根据自己的数据库检查输入,并利用已有的信息。另外,我希望能有一个箭头来回答这个问题。谢谢,谢谢你的帮助,洛蒂利厄斯。。。非常感谢。我已将此标记为已接受的答案。此外,我还试图向上箭头“标记为有用”,但显然我还没有足够的“声誉”,因为我刚刚加入了stackoverflow。一旦我得到足够的“声誉”点数,我会回来向上箭头。
// Replace any spaces in vars
if (isset($gmaps_city)){
$gmaps_city = str_replace(" ","+",$gmaps_city);
}
if (isset($gmaps_province)){
$gmaps_province = str_replace(" ","+",$gmaps_province);
}
if (isset($gmaps_country)){
$gmaps_country = str_replace(" ","+",$gmaps_country);
}
if (isset($gmaps_pcode)){
$gmaps_pcode = str_replace(" ","+",$gmaps_pcode);
}
// If Postal Code and City
if (isset($gmaps_city) AND isset($gmaps_pcode)){
$gmaps_path = $gmaps_city.",+".$gmaps_province.",+".$gmaps_country.",+".$gmaps_pcode."&sensor=false";
// If City but no Postal Code
} else if (isset($gmaps_city) AND !isset($gmaps_pcode)){
$gmaps_path = $gmaps_city.",+".$gmaps_province.",+".$gmaps_country."&sensor=false";
// If Postal Code but no City
} else if (!isset($gmaps_city) AND isset($gmaps_pcode)){
$gmaps_path = $gmaps_province.",+".$gmaps_country.",+".$gmaps_pcode."&sensor=false";
// Only Province and Country
} else {
$gmaps_path = $gmaps_province.",+".$gmaps_country."&sensor=false";
}
// Determine Lat and Long of Address
$geocode=file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$gmaps_path);
$output= json_decode($geocode);
$lat = $output->results[0]->geometry->location->lat;
$long = $output->results[0]->geometry->location->lng;
$status = $output->status;