如何用街道、城市和国家显示手机的当前位置

Posted

技术标签:

【中文标题】如何用街道、城市和国家显示手机的当前位置【英文标题】:How to show current location of mobile with street, city and country 【发布时间】:2013-02-02 11:08:57 【问题描述】:

以下是我编写的用于获取手机当前位置的代码。它显示当前位置以及手机所在的城市和国家/地区。但我需要显示街道地址位置。 请尽快提出建议。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width;height=device-height; user-scalable=no" />
<meta http-equiv="Content-type" content="text/html;charset=utf-8">
<title>PhoneGap Reverse Geolocation Lookup</title>
<script type="text/javascript" src="cordova-1.7.0.js"></script>
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=true"></script>
<script type="text/javascript">
var geocoder;
$(document).ready(function() 
geocoder = new google.maps.Geocoder();
$('#button-get-reverse-lookup').click(function()
navigator.geolocation.getCurrentPosition(onGetCurrentPositionSuccess, onGetCurrentPositionError);
);
);
var onGetCurrentPositionSuccess = function(position) 
console.log("lat: " + position.coords.latitude);
console.log("long: " + position.coords.longitude);
var lat = parseFloat(position.coords.latitude);
var lng = parseFloat(position.coords.longitude);
// paris, france - uncomment to test
//var lat = parseFloat(48.850258);
//var lng = parseFloat(2.351074);
// tiburon, california
//var lat = parseFloat(37.872685);
//var lng = parseFloat(-122.45224);
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode('latLng': latlng, function(results, status)

 if (status == google.maps.GeocoderStatus.OK)
                
                    if (results[1])
                    
                        var reverse_geo = results[1];

                         if (reverse_geo.address_components[0])
                           

                          alert(reverse_geo.address_components[4].long_name+"," + reverse_geo.address_components[3].long_name+"," + reverse_geo.address_components[2].long_name+"," + reverse_geo.address_components[0].long_name);
                          //text = text + "0: " + reverse_geo.address_components[0].long_name + "<br />"1: " + reverse_geo.address_components[1].long_name + "<br />""; 
                          
                       
                
                else
                
                    alert("No hay informaci�n de Reverse Geocoding.");
                
);

var onGetCurrentPositionError = function(error) 
console.log("Couldn't get geo coords from device");

</script>
</head>

<body>
<h1>Reverse Geolocation Lookup</h1>
<button id="button-get-reverse-lookup">Get Reverse Lookup</button>
</body>
</html> 

【问题讨论】:

【参考方案1】:

根据docs on Google site,您需要遍历所有地址组件,查看类型并将它们与您想要提取的内容进行比较。

street_number = 街道编号 路线 = 街道名称 地区 = 城市 Administrative_area_level_1 = 州或省 国家=国家

无法保证地址组件的交付顺序,因此您需要检查它们。

【讨论】:

以上是关于如何用街道、城市和国家显示手机的当前位置的主要内容,如果未能解决你的问题,请参考以下文章

如何从地图上获取街道地址、邮政编码、国家、州?

获取用户国家和城市名称并在谷歌地图上定位

自动完成街道、城市和国家的最佳 php 实现

如何用JS 获取DIV的坐标位置?

手机js页面实现一键定位,并且把获取的地理位置显示到文本框中,如下图,100分

如何使用意图和活动在 Xamarin Android 中插入城市、街道、邮政编码、国家/地区的联系人?