首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在angular-google-maps中使用GooglePlacesServices

如何在angular-google-maps中使用GooglePlacesServices
EN

Stack Overflow用户
提问于 2015-01-08 12:33:24
回答 3查看 1.8K关注 0票数 3

我实例化了一个地图和搜索框,并在搜索完成后删除了一个标记。这是正常工作,但是,我想查询地点服务,以获得附近的地点,我的标记是下降,我得到一个错误,当运行:google.maps.places.PlacesService(地图)未捕获TypeError:未定义不是一个函数...

下面是我的Angular.module.config中的一些相关代码:

代码语言:javascript
复制
uiGmapGoogleMapApiProvider.configure({
  v: '3.17',
  libraries: 'places'
});

在我的地图控制器中:

1)加载时回调

代码语言:javascript
复制
uiGmapGoogleMapApi.then(function(maps) {
  $scope.googleMapsObject = maps;
});

2)设置事件处理程序以创建标记

代码语言:javascript
复制
$scope.searchbox = {
  events: {
      places_changed: placesChangedHandler
  }
}

3)处理地点变更时,设置lat标记,最后一行查询地点名称。

代码语言:javascript
复制
function placesChangedHandler(searchBox) {
  var lat = searchBox.getPlaces()[0].geometry.location.k;
  var lgn = searchBox.getPlaces()[0].geometry.location.C;
  var center = { latitude: lat , longitude: lgn };
  $scope.address = searchBox.getPlaces()[0].adr_address;
  $scope.map = {
    center: center, zoom: 15
  };
  setMarker(center);
  var service = new google.maps.places.PlacesService($scope.googleMapsObject); 
 // service.nearbySearch(request, callback);
}

错误在倒数第二行。(另外,有没有一种更清晰的方法来获取这些变量?)

提前感谢您的帮助!

EN

回答 3

Stack Overflow用户

发布于 2015-01-26 06:24:33

我最近遇到了同样的问题,我花了一些时间才明白哪里出了问题,因为我是angular的新手(老实说,我是Java Script的新手;)

在您的控制器中,您需要添加$window依赖项来访问全局对象google。下面是它的外观:

代码语言:javascript
复制
.controller('mapCtrl', ['$scope', '$window', 'uiGmapGoogleMapApi'
    , function($scope, $window, GoogleMapApi) {
  GoogleMapApi.then(function(map) {
    $scope.googleVersion = map.version;
    $scope.map = { center: { latitude: 59.9500, longitude: 10.7500 }, zoom: 11 };
    $scope.googleMapsObject = map

    var service = new $window.google.maps.places.PlacesService($scope.googleMapsObject);
  });
}])
票数 0
EN

Stack Overflow用户

发布于 2015-04-22 14:29:33

我认为问题是您试图在"maps“返回值上加载places服务,该返回值是google.maps对象。

所以:

代码语言:javascript
复制
$scope.googleMapsObject == google.maps

您需要的是使用markers指令(我还没有尝试过),或者使用您的地图的实际地图对象(可以从tilesLoaded事件获得)。

代码语言:javascript
复制
$scope.map = {
   events: {
     tilesloaded: function (map) {
        $scope.$apply(function () {
            $scope.actualMapObj = map;
            $log.info('this is the map instance', map);
        });
     }
   }
}

来自常见问题解答:http://angular-ui.github.io/angular-google-maps/#!/faq的tilesLoaded

票数 0
EN

Stack Overflow用户

发布于 2015-08-17 05:03:30

在将其初始化为' places‘作为库之后,应该在api参数中具有places属性

代码语言:javascript
复制
uiGmapGoogleMapApi.then(function(maps) {
  maps.places.PlacesService() // -> here you can search for something
});

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27832996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档