我目前正在使用google maps api在地图上对地理位置进行地理编码并返回街道地址。
我目前使用以下代码返回地址:
function codeLatLng(markerPos) {
geocoder.geocode({'latLng': markerPos}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
//Set markerAddress variable
var markerAddress = results[0].formatted_address;
alert(markerAddress);
...
但是如果我不想使用地址组件类型返回格式化地址而是更详细的版本,如何返回某些地址值,如:http://code.google.com/apis/maps/documentation/geocoding/#Types
帮助表示赞赏。
答案 0 :(得分:4)
请问,为什么要检查results[1]
,然后使用results[0]
(或者只是一个我应该忽略的拼写错误)?
只要status
为OK
,就会有至少一个结果。
否则,status
将为ZERO_RESULTS
。
无论如何,你可以使用这样的东西:
function codeLatLng(markerPos) {
geocoder.geocode({'latLng': markerPos}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var markerAddress = results[0].address_components[0].long_name
+ ' (type: ' + results[0].address_components[0].types[0] + ')';
alert(markerAddress);
你可以玩整个address_components
数组,玩得开心! :)
要获得更多乐趣,请查看http://gmaps-samples-v3.googlecode.com/svn/trunk/geocoder/v3-geocoder-tool.html
上的Google Maps API v3地理编码工具的(源代码)答案 1 :(得分:1)
long_name
是地理编码器返回的地址组件的全文说明或名称。
function codeLatLng(markerPos) {
geocoder.geocode({'latLng': markerPos}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
//Set markerAddress variable
var markerAddress = results[0].long_name;
alert(markerAddress);
...