我正在Django中做一个应用程序,在用户配置文件中有一个小地图(由django-profile提供,但修改为使用GMaps v3)
问题是我在构造函数中放置的任何坐标在地图中表示错误。目前,我正在将圣地亚哥德孔波斯特拉(西班牙)的坐标放在Lat。 42.88和龙。 -8.55但Google地图一直告诉我,我在Bayingolin(中国)。
顺便说一句,谷歌地图v2也是如此,它找错了坐标。
以下是代码:
{% block content %}
{% if GOOGLE_MAPS_API_KEY and user.get_profile.location %}
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
<meta name="viewport" content="initial-scale=1.0, user-scalable=yes">
<script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng( {{ user.get_profile.latitude }}, {{ user.get_profile.longitude }} );
var opts = {
zoom: 10,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("location"), opts);
var marker = new google.maps.Marker({
position: latlng,
map: map,
title: "Test"
});
}
</script>
{% endif %}
<div id="profile">
<div id="profile_right">
<div id="avatar" class="span-3 center">
<a href="{% url profile_edit_avatar %}">
<img class="border" src="/static/generic.96.jpg" />
</a>
<p><a href="{{ request.path_info }}edit/avatar/">{% if user.get_profile.has_avatar %}{% trans "Change avatar" %}{% else %}{% trans "Add avatar" %}{% endif %}</a></p>
</div>
<div>
<p>{% trans "Username: " %} {{ user }}</p>
<p>{% trans "Real name: " %} {{ user.first_name }} {{ user.last_name }}</p>
<p>{% trans "Age: " %} {{ user. }}
<p>{% trans "Member for: " %} {{ user.date_joined }}</p>
<p>{% trans "E-mail:" %}
<span class="{% if not email or not validated %}quiet red{% endif %}">
{%if not email %}
{% trans "Not set yet" %}
{% else %}
{{ email }}
{% if not validated %}
{% trans " (Not validated)" %}
{% endif %}
{% endif %}
</span>
</p>
<p>
<label for="location">{% trans "Country" %}:</label>
{% if user.get_profile.country %}
{{ user.get_profile.get_country_display }}
{% else %}
<span class="quiet red">{% trans "Not set" %}</span>
{% endif %}
</p>
<p>
{% trans "Ciudad: " %} {{ user.get_profile.province }}
</p>
</div>
</div>
<div id="profile_left">
{% if GOOGLE_MAPS_API_KEY %}
<p>{% trans "Location" %}:
{% if user.get_profile.location %}
{{ user.get_profile.location }}
{% else %}
{% trans "Not set" %}
{% endif %}
</p>
{% endif %}
{% if user.get_profile.location %}
<div class="span-12 last">
<div id="location" style="width: 480px; height: 240px;"></div>
</div>
{% endif %}
</div>
</div>
以下是结果截图:
答案 0 :(得分:1)
实际上,我遇到的问题是I10N引擎重新格式化了我的十进制输出。对我来说,解决方法是使用stringformat:"s"
过滤器在模板的Javascript部分输出十进制数。
在你的情况下:
var latlng = new google.maps.LatLng( {{ user.get_profile.latitude|stringformat:"s" }}, {{ user.get_profile.longitude|stringformat:"s" }} );
答案 1 :(得分:0)
看起来那个地方的坐标是86.87110,42.10547,它(在文本中)非常接近你使用的坐标,可能在解析时有些错误?
-8.55 - &gt; 85.5莫名其妙?
答案 2 :(得分:0)
我找到了答案。问题是Django的I10N引擎。我将它配置为西班牙单位,在西班牙,小数用逗号表示,而不是点,因此存储的结果例如:42.1231和-8.2456最终结果为:42,1231和-8,2456。
使用我的模板,结果是:
var latlng = new google.maps.LatLng(42,1231,-8,2456);
显然无法通过Google地图解析。