各位版友大家好
小弟我是javascript的初学者
我想请问各位关于Google取得经纬度的函式问题
我参考google api的范例写出来的函式如下:
function addressGps(add) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({address:add},function geoResults(results, status){
//回应函数 状态ok说明有结果
if (status == google.maps.GeocoderStatus.OK) {
var ans = results[0].geometry.location;
//document.write(ans);
return (ans);
}else{
alert(":error " + status);
}
});
}
其中传入的add变量是中文地址,我希望得到此地址转出来的经纬度数字
但是用return传出来ans变量,在外头印出来却是undefined
如果直接在此函式里头印,会印出全部搜寻过的地址的经纬度结果
我想请问各位版友,有没有办法单独一个地址一个地址对应的方式去取得其经纬度的数值
而不是像现在这样用return拿不到数值,或是一次印出一堆数值
谢谢大家
你何不在return前把内容指定给外围的变量?而且我想你应该没有真的接到return的值,你注意到它有两层function吗?里面那层只是回呼函数我猜你是用类似var result = addressGps(add);的方式跑
楼主: william01044 (阿玮) 2015-04-17 17:27:00
感谢P大的回应 我想请问指定给外围的变量是指什么?
但addressGps本身没有回传值(至少你没写),所以收不到
楼主: william01044 (阿玮) 2015-04-17 17:28:00
两层function我是知道的...但是我试过几种方式
楼主: william01044 (阿玮) 2015-04-17 17:29:00
我拆不开这两个function 拆开来就没办法正常执行...可能我功力还太弱T_T
楼主: william01044 (阿玮) 2015-04-17 17:32:00
我刚刚试过P大您说的方法 但是直ans的值还是没出来
但我不熟geocoder的组成,所以没办法回答你如何回传XD
楼主: william01044 (阿玮) 2015-04-17 17:33:00
我是在这个函式结尾前面加上var A = ans; return(A)但是结果是空值 没有办法印出来
不是不是,宣告要在函式宣告之前之后存取A就不要再写var了把var a;写在你贴的程式"之前"然后里面return前写 a = ans;这才是我想表达的方法(虽然很烂)
楼主: william01044 (阿玮) 2015-04-17 17:46:00
状况一样耶 还是没有值T_T而且我明明是用for循环去传地址但是在这个函式里头印出来的经纬度却都连在一起
楼主: william01044 (阿玮) 2015-04-17 17:47:00
并不是一个地址印一个经纬度...所以我在猜是不是这个geocoder函式是全部蒐集好再传
如果你打算好好学习程式,建议先去了解一下变量存活周期
楼主: william01044 (阿玮) 2015-04-17 17:48:00
因为看google api范例的时候 里头有说异步我觉得不是变量周期的问题 因为我试过放在任何地方都没有数值不是因为那个变量在函数内被结束的关系...
你方便贴完整一点的程式吗?老实说我连你用循环也不知道如果你外面还有包循环,就会多很多种可能
楼主: william01044 (阿玮) 2015-04-17 17:58:00
全文在另一篇