2010-12-21 128 views
1

我做在Django已在用户配置文件小地图的应用程序(通过Django的档案中提供,但修改为使用GMaps V3)谷歌地图V3定位错误

的事情是,任何坐标我放入构造函数中它在地图中表示错误。目前,我正在把拉特圣地亚哥德孔波斯特拉(西班牙)的坐标。 42.88和长。 -8.55但Google地图一直告诉我我在Bayingolin(中国)。

顺便说一句,同样的情况发生在Google Maps 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> 

这里是结果的截图: alt text

+0

添加模板渲染:) – 2010-12-21 15:50:09

+0

有趣的部分是使用Javascript/HTML的屏幕截图;) – 2010-12-21 15:52:38

+0

@Mike:这是我的一切(与谷歌地图) 。没有什么更多 – 2010-12-21 15:59:20

回答

1

实际上,我有和I10N引擎重新格式化小数输出相同的问题。对我来说一个解决方法是使用stringformat:"s"过滤器在模板的Javascript部分输出十进制数字。

在你的情况,这将是:

var latlng = new google.maps.LatLng({{ user.get_profile.latitude|stringformat:"s" }}, {{ user.get_profile.longitude|stringformat:"s" }}); 
0

貌似坐标那个地方是86.87110,42.10547,它(文字)是非常接近你使用的坐标,可能由于解析中的一些错误?

-8.55 - > 85.5不知何故?

0

我找到了答案。问题是Django的I10N引擎。我将它配置为西班牙语单位,而在西班牙,小数点用逗号表示,而不是一个点,因此存储的结果例如:42.1231和-8.2456结束于:42,1231和-8,2456。

随着我的模板,结束结果是:

var latlng = new google.maps.LatLng(42,1231,-8,2456); 

这显然不能用谷歌地图进行解析。