2012-12-14 39 views
0

我只是最近纔開始玩HTML,JavaScript,webapps等,我決定嘗試寫我自己的獵物獨立的網絡服務器。谷歌地圖V3只是一個灰色框後ajax查詢

我正在使用Twitter Bootstrap的UI和jQuery的JavaScript的東西。 My reports page列出了所有的報告,並允許用戶選擇一個在地圖上查看。然後頁面從服務器獲取數據爲JSON,這一切都正常。但是,當我撥打map.setCenter(new google.maps.LatLng(data['lat'], data['lng']))時,地圖只是變成灰色,而不是移動到該位置。

我已經在Chrome和Firefox中試過這個,並且我遇到了同樣的問題。奇怪的是,在chrome console-debugger-thing和firebug中沒有錯誤。我可以在「類似問題」下看到10個類似的問題;然而,這些解決方案(例如CSS)都沒有幫助。

這裏的網站(它是在dotCloud沙箱,所以它可能會很慢):http://prey-geniass.dotcloud.com/devices/l6wyd/reports.xml

回答

1

所以我注意到你存儲地圖對象爲window['map'](滑稽如何大家似乎這樣做...當我不必深入源代碼:)時,調試變得更容易)。

我試圖用一組已知座標來設置中心自己:

map.setCenter(new google.maps.LatLng('51.0453246', '-114.0581012')); 

這工作得很好,所以實際的代碼工作正常。我測試了一些不正確的值... null0會把我放在海洋的某個地方,但latlngundefined會使地圖變灰。也許你傳遞的價值是不正確的,最終是undefined

望着那來自第二alert,相關屬性是latitudelongitude,雖然你似乎傳遞data['lat']data['lng']。這是原因嗎?

這應該修復它:

//update map 
marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(data['latitude'], data['longitude']), 
    title:"Last Known Position" 
}); 
marker.setMap(map); 
map.setCenter(new google.maps.LatLng(data['latitude'], data['longitude'])) 
// google.maps.event.trigger(map, 'resize'); 

請注意,我評論了你的「調整」觸發器(我假設你可能在努力加入到解決這個問題,我記得暗示給其他用戶在這裏? :))。你的情況並不是必需的。

+0

嗯,這是刺激性。我認爲這實際上是一個額外的問題。發生了什麼事情是,Android客戶端上傳數據爲'拉特'和'lng',我雖然是廢話,所以我改變它的服務器端的經緯度。現在的問題是數據['緯度']由於某種原因未定義。雖然 – geniass

+0

真的很快回復,但我找到了潛在的原因(請參閱下面的答案),但我將其標記爲正確答案,因爲從我的提交消息來看,我可能會放棄併發布另一個問題。 – geniass

+0

很高興你明白了geniass :)你的應用看起來很整潔!它非常乾淨,我喜歡那樣。 –

0

好吧,我剛剛發現了這個問題。它實際上是服務器端,我沒有將響應標記爲JSON,所以javascript實際上是接收一個字符串,並且我試圖將它用作JSON對象。對於任何使用Flask的人,這裏是執行此操作的代碼: return Response(json.dumps(report), mimetype='text/json')

現在我真的不現在哪個答案標記爲正確的(兩者在技術上是正確的,因爲有2個不同的問題)