4

まず第一に、私はプログラミングの初心者です。私はあなたがグーグルマップを埋め込んだウェブページを作ろうとしています、そしてこのマップであなたはパスを設定する色付きの線を見ることができます。このために、私はDjangoを使用しています。私のviews.pyには、pointsという変数があり、リストにいくつかの座標が文字列として書き込まれています。例えば、

points = ('-15.4566620,28.07163320','15.7566620,29.07163320',....)

次に、グーグルマップスクリプトで、私は持っています:

var FlightPlanCoordinates = [

        new google.maps.LatLng(-15.4566620,28.07163320),
        new google.maps.LatLng(-15.7566620,29.07163320),

                ];

そのため、ページを表示すると、これらのポイントの間に線が表示されます。

その代わりに、次のようなものが欲しいです。

var FlightPlanCoordinates = [

                   {% for point in points %}

                         new google.maps.LatLng({{point}}),

                   {% endfor %}

                ];

しかし、これは機能しません。

私は何を間違っているのですか、そしてそれはどのようにすべきですか?

どうもありがとうございます。

4

2 に答える 2

4

目的は、テンプレートがパス配列をハードコードされている場合と同じようにレンダリングすることです。レンダリングされた Web ページのソース コードを確認してください。

末尾のコンマは、それで機能する場合でも削除することをお勧めします。を使用しforloop.lastて、最後のポイントで省略できます。

polls チュートリアルのようなスタイルに従っています。ビューがpoints変数をテンプレートに送信していることを確認します。

urls.py

urlpatterns含むurl(r'^map/$', 'polls.views.map'),

ビュー.py

def map(request):
    points = ('0,0', '10,0', '10,10', '0,10')
    return render_to_response('polls/map.html', { 'points': points })

テンプレート map.html

...
var mypolyline = new google.maps.Polyline({
    map: map,
    path: [
      {% for point in points %}
        new google.maps.LatLng({{ point }}) {% if not forloop.last %},{% endif %}
      {% endfor %}
    ]
})
于 2012-07-04T19:17:16.897 に答える
0

ポイント配列は、「-15.4566620,28.07163320」という形式の文字列の配列です。だからあなたはこれをやっています: new google.maps.LatLng({{'-15.4566620,28.07163320'}}),

google.maps.LatLng コンストラクターは 2 つの数値を受け取るため、その文字列から数値を解析する (または LatLng コンストラクターに数値を渡す) 必要があります。

編集:それを行う1つの方法は、次のように配列にデータを入力することです(テストされていません):

var polylineArray = [];
for (var i = 0; i < points.length; i++)
{
   // split the string at the comma
   var coords = points[i].split(",");
   // change the two strings to floating point numbers, use them to create the LatLng
   polylineArray.push(new google.maps.LatLng(parseFloat(coords[0]),
                                             parseFloat(coords[1])));
}
于 2012-07-04T18:43:29.237 に答える