3

extra_context私は自分のviews.pyに以下を持っています。

extra_context = {
    'user': list_user,
    'time': str(list_time),
    'latlng': list_latlng
}

上記の変数はすべて のデータ型ですpython list。これらの変数を Gmap v3 javascript で使用したいと考えています。Googleマップの次のスニペットを見つけました:(主要部分の投稿)

<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 もう 1 つの問題は、これら 3 つのパラメーターをJava スクリプト メソッドに渡す必要があることです。これを行うには、3 つの 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);
4

3 に答える 3

3

変数を次のように定義する必要があります。

var user = [{% for i in user %}{{ i }}{% if forloop.last %} {%else%} , {%endif%} {% endfor %}];

つまり、配列内の値の間にコンマを追加します。

于 2012-07-07T07:16:31.010 に答える
2

django-jsonifyを使用します。あなたのテンプレートでは、例えば

var user = {{ user|jsonify }};

魔法のように。

于 2012-07-07T08:52:45.017 に答える