使用 AngularJS 进行反向地理编码

Reverse Geocoding with AngularJS

我正在 Angular 中尝试使用反向地理编码 directive,目前我只能从某个位置获取 lat/lng 坐标,但反向地理编码指令只会给我一个

的错误

Geocoder failed due to: ZERO_RESULTS

我创建了一个简单的 Plnkr 示例来演示我正在努力实现的目标,您可以查看 here

使用时$scope.$apply(function(){ $scope.lat = lat; $scope.lng = lng; });

如果我用常规坐标代替也没关系

$scope.$apply(function(){
        $scope.lat = 4.545;
        $scope.lng = 12.756;
    });

因为这只会导致反向地理编码产生相同的错误。我尝试在 index.html 文件

中尝试使用大括号

<reverse-geocode lat="{{lat}}" lng="{{lng}}"></reverse-geocode> 但我有一种强烈的感觉,我需要以某种方式编辑它们以获取 lat/lng 坐标,但到目前为止运气不佳

因为指令会在异步$window.navigator.geolocation.getCurrentPosition完成之前编译和执行,这意味着指令内部attrs.latattrs.lng都是空的。

一个简单的解决方案是在数据可用之前阻止指令执行:

<reverse-geocode ng-if="lat && lng" lat="{{lat}}" lng="{{lng}}"></reverse-geocode>

演示: http://plnkr.co/edit/mJJ8OIvff1Xspnx24LfJ?p=preview