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

目标是让模板呈现路径数组,就像它是硬编码的一样。您应该检查呈现的网页的源代码以确保。

最好删除尾随逗号,即使它确实可以使用。您可以forloop.last在最后一点使用 省略它。

我遵循民意调查教程中的风格。确保视图将points变量发送到模板:

网址.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”的字符串数组。所以你正在这样做:新的 google.maps.LatLng({{'-15.4566620,28.07163320'}}),

google.maps.LatLng 构造函数接受两个数字,因此您需要从该字符串中解析出数字(或将数字传递给 LatLng 构造函数)。

编辑:一种方法是像这样填充数组(未经测试):

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 回答