【发布时间】:2013-12-18 17:34:48
【问题描述】:
在这方面需要一些帮助。
我正在使用 Google Maps API v3 来获取存储在我的数据库中的人类可读地址的纬度和经度,然后在 Google 地图画布上放置 1 个标记。很简单。
我遇到的问题是某些地址正在退回 --> ZERO_RESULTS 的状态代码
如果我在 maps.google.com 中输入这些相同的地址,他们会找到该特定区域并使用带有近似值的标记对其进行映射。
我的数据库中的一些地址并不具体,这意味着它们可能没有邮政编码和/或它们可能没有城市,但都有省/地区和国家/地区。另外需要注意的是,它们都没有街道地址。
一些人类可读的地址可能包含破折号 (-)、空格 ()、撇号 (') 和逗号 (,)
返回 ZERO_RESULTS 的地址示例如下:
Soul-t'ukpyolsi, Korea, South
在该特定示例中,Country 的名称中有逗号和空格,Region 也有撇号和破折号。
这是我正在使用的 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>
我正在使用 PHP 根据存储在我的数据库中的地址元素生成完整的地址路径。这是我用来生成路径然后发出地理定位器请求的代码:
请记住,城市和邮政编码/邮编是可选元素
// 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;
非常感谢任何帮助。
【问题讨论】:
-
为什么您认为
Soul-t'ukpyolsi, Korea, South这个地址在 Google 地图中有效?请提供一个好的结果的链接(我得到Seoul)。 -
相信问题的根源是拼写错误,而应该是 --> Seoul-t'ukpyolsi,Korea,South ... 相信它在 Google 地图中有效,因为转到 Maps.Google .com 并输入“Soul-t'ukpyolsi, Korea, South”(拼写错误)确实会在首尔放置一个标记。只需通过 JSON 生成 ZERO_RESULTS
标签: javascript google-maps google-maps-api-3