Angular Google 地图地理编码回调
Angular Google maps geocoding callback
我在 google 地图地理编码 api 方面遇到一些问题。
我正在使用 Angular Google 地图并尝试使用回调函数对地址进行地理编码 :
.controller('myCtrl', ['$scope', '$rootScope', 'uiGmapGoogleMapApi', function ($scope, $rootScope, uiGmapGoogleMapApi) {
// To be set by previous step
$rootScope.chosenTown = "Roma"
// geocode the given address
var geocodeAddress = function(address, callback) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
callback(results[0].geometry.location);
} else {
console.log("Geocode was not successful for the following reason: " + status);
}
});
};
// google maps is ready
uiGmapGoogleMapApi.then(function(maps) {
// geocode chosen town
geocodeAddress($rootScope.chosenTown, function(latLng){
console.log("1 " + latLng.lat())
console.log("2 " + latLng.lng())
$scope.map = { center: { latitude: latLng.lat(), longitude: latLng.lng() }, zoom: 12, bounds: {}};
});
});
}])
和 html 代码:
<div class="col-lg-5 finalStepMap">
<ui-gmap-google-map center='map.center' zoom='map.zoom' draggable="true" options="options" bounds="map.bounds">
<ui-gmap-markers models="markers" coords="'self'" options="'options'"></ui-gmap-markers>
</ui-gmap-google-map>
</div>
地图未显示。
但是,如果我调用:
$scope.map = { center: { latitude: 10, longitude: 40}, zoom: 12, bounds: {}};
});
在回调函数外固定纬度和经度,一切正常。
有线索吗?
感谢您宝贵的帮助:)
经过多次谷歌搜索,我终于找到了答案!
你必须使用:
$scope.$apply(function() {
$scope.map = ...
});
我在 google 地图地理编码 api 方面遇到一些问题。
我正在使用 Angular Google 地图并尝试使用回调函数对地址进行地理编码 :
.controller('myCtrl', ['$scope', '$rootScope', 'uiGmapGoogleMapApi', function ($scope, $rootScope, uiGmapGoogleMapApi) {
// To be set by previous step
$rootScope.chosenTown = "Roma"
// geocode the given address
var geocodeAddress = function(address, callback) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
callback(results[0].geometry.location);
} else {
console.log("Geocode was not successful for the following reason: " + status);
}
});
};
// google maps is ready
uiGmapGoogleMapApi.then(function(maps) {
// geocode chosen town
geocodeAddress($rootScope.chosenTown, function(latLng){
console.log("1 " + latLng.lat())
console.log("2 " + latLng.lng())
$scope.map = { center: { latitude: latLng.lat(), longitude: latLng.lng() }, zoom: 12, bounds: {}};
});
});
}])
和 html 代码:
<div class="col-lg-5 finalStepMap">
<ui-gmap-google-map center='map.center' zoom='map.zoom' draggable="true" options="options" bounds="map.bounds">
<ui-gmap-markers models="markers" coords="'self'" options="'options'"></ui-gmap-markers>
</ui-gmap-google-map>
</div>
地图未显示。
但是,如果我调用:
$scope.map = { center: { latitude: 10, longitude: 40}, zoom: 12, bounds: {}};
});
在回调函数外固定纬度和经度,一切正常。
有线索吗?
感谢您宝贵的帮助:)
经过多次谷歌搜索,我终于找到了答案!
你必须使用:
$scope.$apply(function() {
$scope.map = ...
});