2012-03-28 132 views
0

我使用JavaScript API V3如下:獲取谷歌App Engine和谷歌地圖API V3說話

(function() { 
       window.onload = function(){ 
        var latlng = new google.maps.LatLng(57.8, 14.0); 
        var options = { 
         zoom: 6, 
         center: latlng, 
         mapTypeId: google.maps.MapTypeId.ROADMAP 
        }; 
        var map = new google.maps.Map(document.getElementById('map'), options); 
       } 
      })(); 

加載谷歌地圖查看 - 從例如http://www.svennerberg.com/2009/06/google-maps-api-3-the-basics/拍攝。現在我非常希望從數據存儲中獲取長/寬的細節,並將它們視爲標記。然而,我不確定最聰明的方式來做到這一點,似乎有一些令人困惑的例子,沒有幫助。我正在用Python編寫Google App Engine。有沒有人有任何添加標記的簡單方法的指針。

感謝

回答

1

我不知道,如果你問我如何保存/載入緯度在數據存儲/ LNG數據,或者如果你問我如何才能將數據轉換爲JavaScript,所以我會回答這兩個。

假設您正在使用原始數據存儲,只需創建一個GeoPtProperty來存儲數據。當你從datstore加載對象時,你將有一個GeoPt對象的一個​​實例,它具有lat和lon屬性。

就您如何將數據轉換爲javascript而言,您有幾個選項,具體取決於您的用例,不同的選項可能對您更好。 1.您可以在渲染頁面的其餘部分時將數據輸出到模板。它的工作原理取決於您的模板系統,但您需要使用json.dumps或simplejson.dumps創建數據的JSON表示。 2.您可以請求數據作爲AJAX請求並返回JSON數據的表示。 3.您可以將數據嵌入到HTML中,並讓您的JavaScript使用DOM操作來讀取數據。

如果您使用大量標記,您需要考慮的另一種更高級的方法是創建一個包含數據的KML圖層並顯示KML圖層。

+0

謝謝。我將GeoPtProperty位置正確地存儲在數據存儲中,是的,在使用模板系統時確實有意義 - 在這種情況下,使用Django來呈現頁面。我熟悉使用Django模板,但對Javascript不太熟悉。 – Androidian 2012-03-29 09:57:49

3

這很簡單,剛拿到經/緯從你的服務器弄好了,無論是在網頁中嵌入它,或者用一個Ajax請求得到它,那麼你只需要創建一個標記對象。

var marker - new google.maps.Marker ({ map : <your map variable>, 
             position : <latlng variable> }); 

將標記對象保留在變量中,並且可以在不重新創建它的情況下更新它。

marker.setPosition(<new latlng>);