Python Django easy-maps 无法渲染谷歌地图

1 投票
2 回答
2191 浏览
提问于 2025-04-17 11:13

我正在用easy-maps这个模板在django中测试,但是地图没有显示出来,浏览器也没有报错...

{% load easy_maps_tags %}
<html>
    <head>
    </head>
    <body>
        <h3>Geo IP</h3>
        {% easy_map "Russia, Ekaterinburg, Mira 32" 300 400 %}
    </body>
</html>

我已经通过下面的方式安装了easy-maps:

pip install easy-maps

并且在settings.py中启用了它,还同步了数据库?

有没有什么建议我可以检查的地方?

更新:

我现在使用谷歌浏览器的检查元素功能,发现JavaScript代码里有个bug,这就是为什么JavaScript没有渲染页面的原因....

 <!-- Map creation script -->
    <script type="text/javascript">
        function initialize_map_1() {
            var latlng = new google.maps.LatLng(, );
**/geolocate/:42 Uncaught SyntaxError: Unexpected token ,**
            var mapElem = document.getElementById("map-canvas-1");


            var mapOptions = {
                zoom: 16,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };

我还在研究怎么解决这个问题...

解决了:

看起来默认的模板有问题,但当我使用easy-maps自带的map.html模板时,它就正常工作了..

<html>
    <head>
    </head>
    <body>
        <h3>Geo IP</h3>
        <p>Google Map Location: </p>
        {% load easy_maps_tags %}
        {% easy_map "Russia, Ekaterinburg, Mira 32"  300 400 using "easy_maps/map.html" %}
    </body>
</html>

另一个问题:我从views应用传递了一个变量到这个模板,比如说{{ city }}

我该怎么让它工作呢?

{% easy_map "{{ city }}"  300 400 using "easy_maps/map.html" %}

我也试过:

{% easy_map {{ city }}  300 400 using "easy_maps/map.html" %}

但它不管用...

有没有什么办法可以把{{ city }}传递给easy_map标签...

全部完成:

上下文变量可以直接传递给块标签,而不需要用'{{ }}'包裹...

   {% easy_map city  300 400 using "easy_maps/map.html" %}

2 个回答

0

我看到你已经解决了你的问题,

我也遇到过同样的情况:

在这行代码中,出现了/geolocate/:42 未捕获的语法错误:意外的逗号,导致我的模板中没有显示地图。

我通过重置我的数据库(运行一个syncdb命令)来解决了这个问题。

0

我也遇到了同样的问题。在代码里查找的时候,我发现当计算经纬度时,

from geopy import geocoders

g=geocoders.Google()
g.geocode("Russia, Ekaterinburg, Mira 32") 

会被调用,这时会出现一个值错误(ValueError):

ValueError: Didn't find exactly one placemark! (Found 2.)

因此,它找不到经纬度,导致了JavaScript的语法错误(syntaxerror):

var latlng = new google.maps.LatLng(, );

如果你输入一个更具体或者更笼统的地址,它就能正常工作,地图也会显示出来:

In [13]: g.geocode("Russia, Ekaterinburg")
Out[13]: (u'Yekaterinburg, Sverdlovsk Oblast, Russia', (56.8333333, 60.600000000000001))

撰写回答