使用javascript从google地图加载json数据
这就是我的代码,console.log给了我正确的值,但是函数不返回值,即使返回值在超时内。我一定是做错了什么使用javascript从google地图加载json数据,javascript,json,google-maps,Javascript,Json,Google Maps,这就是我的代码,console.log给了我正确的值,但是函数不返回值,即使返回值在超时内。我一定是做错了什么 function countyfinder(address){ var rr =$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' + address.replace(" ", "%20")).done(function(data) { var county = data.results[0]
function countyfinder(address){
var rr =$.getJSON('https://maps.googleapis.com/maps/api/geocode/json?address=' + address.replace(" ", "%20")).done(function(data) {
var county = data.results[0].address_components[3].short_name;
//return county;//data is the JSON string
});return rr;};
function calculatetax(address, price){
var j = countyfinder(address);
setTimeout(function(){var k = j["responseJSON"]['results'][0]['address_components'][3]['short_name'];
console.log(k);//return k won't work in here either
}, 1000); return k
};
这就是我的结局:
var jq = document.createElement('script');
jq.src = "//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
function getCounty(address) {
var country;
var baseApiUrl = "https://maps.googleapis.com/maps/api/geocode/json";
var query = "?address=" + encodeURIComponent(address);
var queryUrl = baseApiUrl + query;
$.ajax({
url: queryUrl,
async: false,
dataType: 'json',
success: function(data) {
county = gmapsExtractByType(data, "administrative_area_level_2 political");
}
});
return countr.long_name;
}
function gmapsExtractByType(json, type) {
return json.results[0].address_components.filter(function(element) {
return element.types.join(" ") === type;
})[0];
}
console.log( getCounty("100 wacko lane ohio") );
我必须通过更改ajax请求中的一些设置来使用同步请求。这样做的缺点是,浏览器将被锁定,直到您收到请求响应,这可能在连接速度慢或与不可靠的服务器连接时出现问题。对于谷歌,大多数时候,我认为这不会发生。1。为什么要使用javascript中的地理编码Web服务,请使用Google Maps javascript API v3地理编码服务2。$。getJSON是异步的
rr
是承诺,而不是您认为它是1的数据。我现在就调查一下。有没有办法等待异步数据?