ngCordova getCurrentLocation导致空白谷歌地图

时间:2016-02-14 22:31:07

标签: angularjs cordova ionic-framework google-geolocation

我知道有很多支持论坛,但似乎没有人能找到我正在寻找的答案。所以,详细地说,下面是我的场景(我正在开发离子帧)。

我正在使用ngCordova cordova-plugin-geolocation来获取我当前的位置(这很好):

function initialize(){
var posOptions = {timeout: 10000, enableHighAccuracy: false};

$cordovaGeolocation.getCurrentPosition(posOptions)
  .then(function(pos){
    var lat=pos.coords.latitude;
    var lng=pos.coords.longitude;
    var myLatlng = new google.maps.LatLng(lat,lng);
    initMap(myLatlng);
  }, function(err){
});}

我已经通过上面的代码验证了vars lat,lng填充了正确的值。所以,接下来我要做的是渲染我的谷歌地图,我是通过下面的 initMap 功能来实现的:

function initMap(origin){
var mapOptions = {
  center: origin,
  zoom: 16,
};
$scope.map=new google.maps.Map(document.getElementById("map"),mapOptions);}

当我尝试渲染此图像时,我只收到一个空白屏幕。另外,我有'ionic.Platform.ready(initialize);'在我的控制器代码中。

注意:以下是我的html模板中的代码段:

<div id="map" ng-controller="MapCtrl">
</div>

一些失败的编码尝试包括:

  1. 使用ng-init()而不是ionic.Platform.ready - 相同的空白图像
  2. 将一切都从功能中解脱出来(绝望的尝试) - 同样的空白图像
  3. 成功时间:

    我直接使用latlong google对象调用 initMap ,完全绕过嵌套在initialize()函数中的“getCurrentPosition”操作。

    任何建议都会非常感激。

1 个答案:

答案 0 :(得分:0)

因此,我的初始逻辑的问题是执行getCurrentPosition是一个异步调用,这意味着它将在DOM完全加载后接收其数据。所以,为了解决这个问题,我使用$ q.defer()来创建一个稍后要访问的promise对象。有关如何执行此操作的更多信息,请参阅我发布的另一个论坛:

https://forum.ionicframework.com/t/ngcordova-getcurrentposition-with-google-maps-api/44153

祝你好运,编码愉快!