5

我在 angularjs 中使用地理定位 api。像这个例子:http: //jsfiddle.net/LyD4Q/4/

HTML

 <div ng-app>
<div ng-controller="GeoTestCtrl">
    <div ng-hide="supportsGeo">
        Your browser doesn't support geolocation
    </div>
    <div ng-show="supportsGeo">
  Manual digest when position received: <input type="checkbox" ng-model="manualDigest"/>
        <br/>
        <button ng-click="doTest1()">
            Geo Location Test 1: window.navigator.geolocation
        </button>

        Need to type something to trigger digest:
        <input type="text" ng-model="something"/>
        <hr/>
        Position: <button ng-click="position=null">clear</button>
        <pre ng-bind="position|json"/>
        <pre ng-bind="zipcode|json"/>
       </div>
      </div>
     </div>
    <hr/>

Javascript

function GeoTestCtrl($scope, $window) {
$scope.supportsGeo = $window.navigator;
$scope.position = null;
$scope.doTest1 = function() {
    window.navigator.geolocation.getCurrentPosition(function(position) {
        $scope.$apply(function() {
            $scope.position = position;
        });
    }, function(error) {
        alert(error);
    });
};

}

但我试图通过使用它来获取邮政编码。我尝试使用“position.address.postalCode”,但它对我不起作用。请帮我解决这个问题。

4

2 回答 2

8

谢谢你的帮助.... :) 我解决了。这是代码:

            var lat = position.coords.latitude;
            var long = position.coords.longitude;
            var  latlng = new google.maps.LatLng(lat, long)

            geocoder.geocode({'latLng': latlng}, function(results, status) {
                $scope.$apply( function () {

                    if (status == google.maps.GeocoderStatus.OK) {


                        if (results[0]) {
                            for(var i=0; i<results[0].address_components.length; i++)
                            {
                                var postalCode = results[0].address_components[i].types;
                             }
                         }
于 2013-05-27T18:57:08.520 回答
3

根据MDN 文档window.navigator.geolocationgetCurrentPosition()不是AngularJS 特定的 API)不返回邮政编码。此外,您链接的 JSFiddle 示例显示了可通过此 API 获得的数据:

{
  "timestamp": 1369367289899,
  "coords": {
    "speed": null,
    "heading": null,
    "altitudeAccuracy": null,
    "accuracy": 22000,
    "altitude": null,
    "longitude": -125.419416,
    "latitude": 35.774929
  }
}

如果要将纬度和经度坐标更改为邮政编码,则需要使用其他一些 API 或服务。一个快速的谷歌搜索出现了一些看起来很有希望的结果。

于 2013-05-24T03:54:16.187 回答