我的views.py。
中有以下extra_context
extra_context = {
'user': list_user,
'time': str(list_time),
'latlng': list_latlng
}
以上所有变量都是python list
的数据类型。现在我想在Gmap v3 javascript中使用这些变量。我找到了谷歌地图的以下片段:(发布主要部分)
<script type="text/javascript">
var map ;
function initialize() {
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 2,
center: latlng,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var flightPlanCoordinates = [ {% for ip in latlng %}{{ ip }}{% endfor %}];
for(var i in flightPlanCoordinates){
var marker = add_marker(flightPlanCoordinates[i][0], flightPlanCoordinates[i][1],"Some title!","html for info box");
marker.setMap(map);
}
}
function add_marker(lat,lng,title,box_html) {
var infowindow = new google.maps.InfoWindow({
content: box_html
});
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat,lng),
map: map,
title: title
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
return marker;
}
上面的代码显示了一个符合从上下文传递的latlng
列表的标记。但问题是当时我也试图以同样的方式通过time and user
。它在地图上没有显示任何内容。顺便说一句,我试着和这个仆人一起试试:
var user = [{% for i in user %}{{ i }}{% endfor %}];
var timestamp = [{% for y in time %}{{ y }}{% endfor %}];
这是正确的方法吗?我是根据latlng
代码编写的javascript新手。
我尝试了alert(timestamp)
。什么都没发生:(
另一个问题是我必须将这三个参数传递给add_marker
java脚本方法。要做到这一点,我必须同时运行三个for循环。发布伪代码:
var user = [{% for i in user %}{{ i }}{% endfor %}];
var timestamp = [{% for y in time %}{{ y }}{% endfor %}];
var flightPlanCoordinates = [ {% for ip in latlng %}{{ ip }}{% endfor %}];
for (var in flightPlanCoordinates) and for (a in timestamp) and for(b in user)
{
var marker = add_marker(flightPlanCoordinates[i][0], flightPlanCoordinates[i][1],b,a);
marker.setMap(map);
答案 0 :(得分:3)
您需要将变量定义为:
var user = [{% for i in user %}{{ i }}{% if forloop.last %} {%else%} , {%endif%} {% endfor %}];
即。在数组中的值之间添加逗号。
答案 1 :(得分:2)
答案 2 :(得分:0)
使用JSON.parse() 在您的模板中使用例如
<script type="text/javascript">
var user = JSON.parse('{{user}}');
</script>
这对我来说很好;)