2012-03-28 134 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>);