作者lovelycateye (我还想要更多力量)
看板Ajax
标题Re: [ js ] 关於.getLatLng的问题
时间Mon May 24 01:32:10 2010
※ 引述《atoi (atoi)》之铭言:
: 我尝试要利用学校名称去搜寻该校的经纬度
: 虽然用"校名"不一定可行,因为我查到的这个方式是要用地址
: 那我想说先试试看,但这不是重点,重点是
: 我写的code会有一些问题
: 假设Universities[j][i]是存放校名,这变数的row是表示某一区
: 而column表示该区的一些学校,myGeocoder = new GClientGeocoder(); 这行写过了
: 以下就是code的部分:
: for(var i = 0 ; i < Universities[j].length ; i++ )
: {
: myGeocoder.getLatLng( Universities[j][i], function(point)
: {
: if(!point)
: window.alert(Universities[j][i] + " not found");
: else
: {
: window.alert(Universities[j][i]);
: }
: }
: );
: }
: 而这个code跳出来的视窗里面写的都是同一个校名,而且都是该区的最後一个
: 学校,不知道是为什麽,可以请大家帮忙看看吗,谢谢了
1.没用过google maps api的人,天晓得GClientGeocoder,是什麽东西。
2.怕的话可以在for回圈里面加上 myGeocoder.setCache(null);
3.重点来了
这是ajax,我没记错的话,不可能有办法预期哪一个geoencode会先完成。
换句话说你可能是abc三个学校照顺序传,但是他是完成就call你的function,
所以有可能是bca的顺序叫到。
因此你根本不会知道第一个回传的经纬度是不是真的是你第一个叫他做的地址。
4.你的i和j在你的callback里面应该是看不到才对的。
callback function里面只看得到point和Universities[]才对。
当然,我不知道你有没有把i和j另外存放,不过看起来是没有。
5.最後,这应该要去google版问吧? (虽然回文的我没资格说就是=3=)
6.补充:方便的话附上完整code比较容易看出问题在哪,因为这code一看就是有问题。
7.不负责任猜测:八成是你有把i和j存起来,然後回圈跑一次就存一次i和j,
所以大概你会跳出的都是最後一个学校。
--
到底是…
神创造了
人? 相信上苍,就别亵渎神明!
________________________________________________________________________________
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
亦或是… 相信自己,就别妄自菲薄!
人创造了
神?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.84.126.26
※ 编辑: lovelycateye 来自: 219.84.126.26 (05/24 01:38)
1F:推 atoi:谢谢你的回答喔,我的确不熟这方面的,我会再多研究的 05/24 10:12