2016-07-01 9 views
1

GeoDjangoのドキュメントではGMapの接続について何も教えていないので、何が起こっているのか分かりません。GeoDjangoにGoogleマップを接続する方法は?

models.py:

from django.contrib.gis.db import models 
class Location(models.Model): 
    name = models.CharField(max_length=100) 
    coords = models.PointField(srid=4326, blank=True, null=True) 

forms.py:そのようなコードは自動的に 'coordsの' のために生成されたadd_location.htmlで

from django.contrib.gis import forms 
class LocationForm(forms.ModelForm): 
    class Meta: 
     model = Location 
     fields = ['coords', 'name'] 

:で

<div id="div_id_coords" class="form-group"> 
    <div class="controls "> 
     <div id="id_coords_div_map"> 

      <div id="id_coords_map"></div> 

      <span class="clear_features"> 
       <a href="javascript:geodjango_coords.clearFeatures()">Delete</a> 
      </span> 
      <textarea id="id_coords" class="vSerializedField required" cols="150" rows="10" name="coords"></textarea> 

      <script type="text/javascript"> 
        var map_options = {}; 
        var options = { 
         geom_name: 'Point', 
         id: 'id_coords', 
         map_id: 'id_coords_map', 
         map_options: map_options, 
         map_srid: 4326, 
         name: 'coords' 
        }; 

        var geodjango_coords = new MapWidget(options); 
      </script> 

     </div> 
    </div> 
</div> 

私js file私のモデルにマーカーの座標を取得しようとしています:

var mapOptions = {...}; 
    map = new google.maps.Map($('#id_coords_map')[0], mapOptions); 

    map.addListener('click', function(e){ 
      placeMarker(e.latLng, map); 
      var position = marker.getPosition(); 
    }); 

    var marker; 
    function placeMarker(latLng, map) { 
     marker = new google.maps.Marker({...}); 
     return marker 
    } 

しかし、動作しません。私はクロームコンソール(私はボタンを押したときに、私のフォームに場所を追加します)でエラーが出ますので、それも、座標を取得しに来ていません:

ラインに関連する
Uncaught ReferenceError: MapWidget is not defined 

var geodjango_coords = new MapWidget(options); 

そして、フォームフィールドのCOORDSで検証エラーとして私が見ることができます -

を「ありませジオメトリ値が」私は何かがGMapの接続が間違っていることを推測しないと(のModelFormの__init__self.fields['coords'].widget経由)COORDSフィールドにあったものをウィジェットチェックし、それターそれがOpenLayersウィジェットであることを明らかにした。

GMapをウィジェットとして取得し、マーカーの座標をインスタンスに保存するにはどうすればよいですか?

P.S.ページ(それはGoogleマップへの接続についてである)のヘッドコンテンツ:HEADに{{form.mediaを}}追加

<script type="text/javascript" charset="UTF-8" src="https://maps.googleapis.com/maps-api-v3/api/js/25/5/intl/ru_ALL/common.js"></script> 

<script type="text/javascript" charset="UTF-8" src="https://maps.googleapis.com/maps-api-v3/api/js/25/5/intl/ru_ALL/map.js"></script> 

<script type="text/javascript" charset="UTF-8" src="https://maps.googleapis.com/maps-api-v3/api/js/25/5/intl/ru_ALL/util.js"></script> 

<script type="text/javascript" charset="UTF-8" src="https://maps.googleapis.com/maps-api-v3/api/js/25/5/intl/ru_ALL/onion.js"></script> 

<script type="text/javascript" charset="UTF-8" src="https://maps.googleapis.com/maps-api-v3/api/js/25/5/intl/ru_ALL/stats.js"></script> 

<script type="text/javascript" charset="UTF-8" src="https://maps.googleapis.com/maps-api-v3/api/js/25/5/intl/ru_ALL/controls.js"></script> 

<script type="text/javascript" charset="UTF-8" src="https://maps.googleapis.com/maps-api-v3/api/js/25/5/intl/ru_ALL/marker.js"></script> 
+0

あなたは自分のJSファイルが* Google JSファイルの後に読み込まれていることを100%確信していますか?私がhttps://developers.google.com/maps/documentation/javascript/ :)をチェックすると、MapWidgetはGoogle Mapsのものではないようです。 – ZvL

+0

BODYの底にjqueryスクリプトがありますが、私はHEADにgoogleスクリプトを含めました。私はCOORDSフィールドでGoogle Mapsを見ることができることに気付きたいですが、それはウィジェットではありません。 OpenLayersウィジェットはGoogleマップの下に滞在しているためです。 – Dennis

+0

おそらくそれで、なぜ、私はGMapでクリックするので、検証エラー "ジオメトリ値なし"が得られるのですが、フォームはOpenLayersウィジェットからの値を期待しています...それは私の提案です – Dennis

答えて

関連する問題