2010-12-21 144 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); 

這顯然不能用谷歌地圖進行解析。