[問題] google map 輪播的問題
不好意思,又有一個問題,可能跟 Js 有關
自己參考網上許多範例做了一個輪播的程式
就是很一般地效果
在一開始照著陣列會有許多的點出現在 google map 上
這些點有設定不同的指標圖、對話框內容文,然後會自動跑下一個輪播每一個陣列的點
我把地址那些放入資料庫隨機撈出來
問題是,一開始都正常
不過當我陣列擺超過 10 個點之後,有些點會出不來(有時後重讀又出得來)
看原始碼內容的陣列是完全正確,都有出現
也就是說撈資料庫出來的所有資料都有放進程式碼陣列裡
但畫面上的 google map 點卻不見了,有時還會有一些點錯亂掉
每次重讀消失的點都不同,錯亂的點都不同(因為我是隨機撈資料庫)
只有地址的部份會亂掉,譬如A點跑到B點,然後B點圖不見,但A圖跟A對話框內容是正確
我有設一個 i 去跑 addresses 陣列內所有資料(給google map的地址)
alert 出來確認沒錯,20 筆資料就是 20 (顯示19)
但後來又設一個 total 是自動用 Js 跑 google map 自動輪播的數字
這個數字就會亂掉,照理說要跟 i 一樣才是,不過有時 10 有時 20 有時 11 12 ...
由於 Js 基礎不是很好,不知道是不是哪邊概念錯誤,請高手指教
下面程式碼會說明
<script type="text/javascript">
var map;
var marker = new Array(0);
var total = 0;
var cc = 0;
var addresses = ['','','','',''.... // (N個地址)
var images = (對應的指標圖)
var siteDesc = (滑鼠移到指標上出現的字)
var message = (click點選指標出現對話框內的內容)
---------------------------這沒什麼問題,只是點一下指標會出現對應對話框內容
function setHandler(i,point,mark){
GEvent.addListener(mark,"click", function() {
var myHtml = message[i];
map.openInfoWindowHtml(point, myHtml);
});
}
---------------------------
function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.enableScrollWheelZoom();
var geocoder = new GClientGeocoder();
for(var i in addresses){
-------------------------------------------------
addr = addresses[i];
-------------------------------------------------這裡i正確,數字正確
geocoder.getLatLng(addr, function(point){
map.setCenter(point, 16);
var icon = new GIcon();
icon.image = images[total];
icon.iconSize = new GSize(60,60);
icon.iconAnchor = new GPoint(24,16);
icon.infoWindowAnchor = new GPoint(24,16);
var mark = new GMarker(point,{icon:icon,title:siteDesc[total]});
map.addOverlay(mark);
marker.push(mark);
setHandler(total,point,mark);
total++;
});
--------------------------
上面每跑一次,就會多一個點照理說 total 是 global 屬性,一開始設 0
i 最後是多少 total 應該也就會是多少 ?
可是最後傳出去時,發現 total 每次重讀數字都不一樣
--------------------------
}
-----------------------啟動輪播
setTimeout("move(0)",1000);
-----------------------
}
}
------------------------
function move(cc){
setTimeout("move("+((cc+1)%total)+")",6000);
^^^^^
//我是在這邊去 alert(total); 發現 total 都不一樣(i是都一樣),
//所以這邊就有一點問題
map.panTo(marker[cc].getLatLng());
//google map API 語法,地圖會自動指向該點
var myHtml = message[cc];
map.openInfoWindowHtml(marker[cc].getLatLng(),myHtml);
}
------------------------
</script>
如有問題我再補充
謝謝
--
▍ ▍ ╯╰ ╯╰ ◢◣ ◢◣ 我最愛的 柏柏龍~ 柏柏龍~
◢██◣ ╮╭ ▎▎╮╭ ▎▎ 柏柏龍~ 柏柏龍~
⊙ ⊙ ◢ ◣ ⊙ ⊙ ◣ 人人心中都有柏柏龍~
≡ ▼ ≡ ▲▲ ● ● ≡ ▼ ≡ ■ ■ ■ ■ 憤怒就永遠不會消失~
皿 ◢⊙⊙◣ ≡皿 ≡ 皿 炸是最美的擁有~
◢◤^ ^^◥◣ 皿 ◢◤^^^◥◣ ◥ ︶ ▍▍▍▍▍▍ ψdiabloq13
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.207.2.26
推
11/10 12:12, , 1F
11/10 12:12, 1F
推
11/10 12:39, , 2F
11/10 12:39, 2F
→
11/10 12:40, , 3F
11/10 12:40, 3F
→
11/10 12:44, , 4F
11/10 12:44, 4F
→
11/10 13:08, , 5F
11/10 13:08, 5F
→
11/10 13:11, , 6F
11/10 13:11, 6F
→
11/10 13:11, , 7F
11/10 13:11, 7F
推
11/10 22:14, , 8F
11/10 22:14, 8F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章