5

angularjs で geolocation 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

3

のMDN ドキュメントにwindow.navigator.geolocationよると、getCurrentPosition()(AngularJS 固有の API ではありません) は郵便番号を返しません。さらに、リンクした JSFiddle の例は、この API を介して利用可能なデータを示しています。

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

緯度と経度の座標を郵便番号に変更する場合は、他の API またはサービスを使用する必要があります。簡単なGoogle 検索で、いくつかの有望な結果が得られました。

于 2013-05-24T03:54:16.187 に答える