angularjs谷歌地图$location.search在自动完成地点更改后不会更改
初始请求url为http://localhost//map?lat=33.73060000952102&lng=-117.12635126323244 在我的项目中,我使用的是谷歌地图自动完成服务,该服务会自动填充带有地址预测的文本字段,一旦选择了地址,地图就会以该位置为中心。成功启动My place_changed事件侦听器,并成功调用My controllers setLocation函数。但是,地址栏中的URL不会用新的lat和lng参数值更新 如果我从ng调用$scope.getProjectsByCenter,在html中单击它就会工作。不知何故,事件链已就位\u已更改与$location.search的冲突 有人想知道为什么吗 角度:app.jsangularjs谷歌地图$location.search在自动完成地点更改后不会更改,angularjs,google-maps,autocomplete,location,Angularjs,Google Maps,Autocomplete,Location,初始请求url为http://localhost//map?lat=33.73060000952102&lng=-117.12635126323244 在我的项目中,我使用的是谷歌地图自动完成服务,该服务会自动填充带有地址预测的文本字段,一旦选择了地址,地图就会以该位置为中心。成功启动My place_changed事件侦听器,并成功调用My controllers setLocation函数。但是,地址栏中的URL不会用新的lat和lng参数值更新 如果我从ng调用$scope.getProj
var app = angular.module('projectmapsApp', []);
app.controller('MainMapController', function($scope,$location){
$scope.setLocation = function(lat,lng){
$location.search('lat',lat);
$location.search('lng',lng);
console.log($location.search()); //This logs an object with the new lat and lng
};
$scope.getProjectsByCenter = function(){
var center = getProjectsByCenter();
$scope.setLocation(center.lat(),center.lng());
};
});
香草:map.js
function initializeMap() {
var map = new google.maps.Map(document.getElementById("map-canvas"), {
center: {lat: 33.868670, lng: -117.796783}
});
var input = document.getElementById('place-search');
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.addListener('place_changed', function() {
var place = autocomplete.getPlace();
if (!place.geometry) {
return;
}
var lat = place.geometry.location.lat();
var lng = place.geometry.location.lng();
angular.element('#MainMapController').scope().setLocation(lat,lng);
};
};
找到了答案$申请 我的设置位置现在如下所示:
$scope.setLocation = function(lat,lng){
$location.search('lat',lat);
$location.search('lng',lng);
$scope.$apply();
};
这里有一篇很棒的文章:有趣的是,在调用setLocation后,它不会更新地址,如果我调用,请单击调用getProjectsByCenter的链接,该链接现在已注释掉所有代码,因此它不会执行任何操作。地址将更新到我使用setLocation发送的位置。这意味着$location.search正在更改地址/url,但浏览器在我与DOM交互之前不会响应它。我想。