【发布时间】:2017-09-06 10:27:53
【问题描述】:
我从我的数据库中提取要在谷歌地图上显示的区域列表。我还想使用reverse geocoding 显示离每个区域最近的城市,但无法使其正常工作。 我对 AngularJS 和 Promise 有一些经验,并且搜索过 Stackoverflow 但找不到任何解决此问题的方法。
HTML:
<div ng-repeat="area in vm.areas">
<span>{{area.name}}</span>
<span>Close to: </span> <span>{{vm.getCity(area)}}</span>
</div>
JS:
vm.getCity = function(area){
var center = getCenter(area.paths);
getAddress(center[0], center[1]).then(function(city){
console.log(city);
return city;
})
}
function getAddress (latitude, longitude) {
return $q(function (resolve, reject) {
var request = new XMLHttpRequest();
var method = 'GET';
var url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitude + ',' + longitude + '&sensor=true';
var async = true;
request.open(method, url, async);
request.onreadystatechange = function () {
if (request.readyState == 4) {
if (request.status == 200) {
var data = JSON.parse(request.responseText);
var results = data.results;
var returnString = ""
for(var i=0; i<results.length; i++){
var types = results[i].types;
if(types[0] === 'locality'){
returnString = results[i].address_components[0].long_name;
}
}
resolve(returnString);
}
else {
reject(request.status);
}
}
};
request.send();
});
};
我可以看到控制台中显示了正确的城市,但它们在视图中不可见。非常感谢任何帮助!
【问题讨论】:
-
根据stackoverflow.com/questions/34953005/…,设法使用指令来解决它
标签: javascript angularjs google-maps google-maps-api-3