Python Django easy-maps 无法渲染谷歌地图
我正在用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))