我实例化了一个地图和搜索框,并在搜索完成后删除了一个标记。这是正常工作,但是,我想查询地点服务,以获得附近的地点,我的标记是下降,我得到一个错误,当运行:google.maps.places.PlacesService(地图)未捕获TypeError:未定义不是一个函数...
下面是我的Angular.module.config中的一些相关代码:
uiGmapGoogleMapApiProvider.configure({
v: '3.17',
libraries: 'places'
});在我的地图控制器中:
1)加载时回调
uiGmapGoogleMapApi.then(function(maps) {
$scope.googleMapsObject = maps;
});2)设置事件处理程序以创建标记
$scope.searchbox = {
events: {
places_changed: placesChangedHandler
}
}3)处理地点变更时,设置lat标记,最后一行查询地点名称。
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);
}错误在倒数第二行。(另外,有没有一种更清晰的方法来获取这些变量?)
提前感谢您的帮助!
发布于 2015-01-26 06:24:33
我最近遇到了同样的问题,我花了一些时间才明白哪里出了问题,因为我是angular的新手(老实说,我是Java Script的新手;)
在您的控制器中,您需要添加$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);
});
}])发布于 2015-04-22 14:29:33
我认为问题是您试图在"maps“返回值上加载places服务,该返回值是google.maps对象。
所以:
$scope.googleMapsObject == google.maps您需要的是使用markers指令(我还没有尝试过),或者使用您的地图的实际地图对象(可以从tilesLoaded事件获得)。
$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
发布于 2015-08-17 05:03:30
在将其初始化为' places‘作为库之后,应该在api参数中具有places属性
uiGmapGoogleMapApi.then(function(maps) {
maps.places.PlacesService() // -> here you can search for something
});
https://stackoverflow.com/questions/27832996
复制相似问题