地理位置邮政编码

7

我使用以下代码获取位置和城市信息,但是如果用户授权了,我无法得到邮政编码。请告诉我是否可以使用此代码来实现此功能。如果获得授权访问,则它只会填充文本字段。

<script type="text/javascript">
  if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
     $("#location").val(position.address.city+", "+position.address.region);
  });
 }

3个回答

10

(索引):78 [弃用] getCurrentPosition() 和 watchPosition() 不再在不安全的源上工作。要使用此功能,您应该考虑将应用程序切换到安全源,例如HTTPS。 - Azimuth
@Azimuth 只需使用 https:// 版本的 jsfiddle。我也已更新答案。 - Gabriele Petrioli
7
在Chrome中无法正常工作。position.address未定义。 - Azimuth
是的,Chrome不显示它,因为Google正在收费提供此服务。 - AbsoluteƵERØ

8
查看最新的HTML5 Geolocation API,我没有看到支持position.address.cityposition.address.regionposition.address.city的内容。因此,我必须说目前不支持。


更新:

根据 @Gaby aka G. Petrioli 的回答,在 Firefox 中支持地址查找。


5

HTML 5地理位置API不支持地址信息获取,但您可以结合Google Maps API实现: 以下是一个示例,可以获取邮政编码,但也可用于获取完整的地址信息:

if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
        var lat = position.coords.latitude;
        var long = position.coords.longitude;
        var point = new google.maps.LatLng(lat, long);
        new google.maps.Geocoder().geocode(
            {'latLng': point},
            function (res, status) {
                var zip = res[0].formatted_address.match(/,\s\w{2}\s(\d{5})/);
                $("#location").val(zip);          
            }
        );
    });
}

$("#location").val(zip); 应该改为 $("#location").val(zip[1]); 否则它会返回整个数组的内容。 - Hash Borgir
不错的想法,但是谷歌API是否内置于现代浏览器中? - Kevin Danikowski
1
@KevinDanikowski 不,你可以将谷歌地图API作为CDN <script src=..> 包含在你的应用程序中。 - CDM social medias in bio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接