我实例化了一个 map 和搜索框,并在搜索完成后删除了一个标记。这是正常工作的,但是,我想查询地点服务以获取放置标记的附近的地点,并且在运行时收到错误: google.maps.places.PlacesService(map) Uncaught TypeError: undefined is not a功能...
下面是一些相关代码 在我的 Angular.module.config 中:
uiGmapGoogleMapApiProvider.configure({
v: '3.17',
libraries: 'places'
});
在我的 map Controller 中:
1)加载时回调
uiGmapGoogleMapApi.then(function(maps) {
$scope.googleMapsObject = maps;
});
2) 设置事件处理程序来创建标记
$scope.searchbox = {
events: {
places_changed: placesChangedHandler
}
}
3) 处理地点更改时的情况,设置纬度标记,以及(最后一行是问题)查询地点名称。
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);
}
错误出现在倒数第二行。 (另外,是否有更干净的方法来获取这些变量?)
预先感谢您的帮助!
最佳答案
我最近遇到了同样的问题,花了一些时间才明白出了什么问题,因为我是 Angular 新手(说实话,我是 Java Script 新手;))
在您的 Controller 中,您需要添加 $window
依赖项来访问全局对象 google
。它的外观如下:
.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);
});
}])
关于angularjs - 如何将 GooglePlacesServices 与 angular-google-maps 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27832996/