2

こんにちは、マップ上のクリックされたポイントの緯度経度を取得し、その情報を id タグに保存する方法を探しています。私は gmaps4rails v2 を使用しており、現在のコードは次のとおりです。

<script type="text/javascript">
  var handler2 = Gmaps.build('Google');
  handler2.buildMap({ provider: { }, internal: {id: 'map'}}, function(){
      // I assume this is the way you retrieve the amrkers array
      var json_data = <%=raw @hash.to_json %>;
      var markers = handler2.addMarkers(json_data);

      _.each(json_data, function(json, index){
          var marker  = markers[index];
          json.marker = marker;
          google.maps.event.addListener(handler2.map, 'click', function( event ){
              var latlong = document.getElementById("latlong");
              latlong.innerHTML =( "Latitude: "+event.latLng.lat()+" "+", longitude: "+event.latLng.lng() );
          });

      });
      handler2.bounds.extendWith(markers);
      handler2.getMap().setZoom(1);

  });
</script>

<div id="latlong">
This is the lat long of the currently clicked point.
</div>

問題は、マップのどこをクリックしてもリスナーが応答せず、ID タグ「latlong」で結果が得られないことです。助けていただければ幸いです。

4

1 に答える 1

3

問題は、Google マップ オブジェクトではなく gmaps4rails オブジェクトであるaddListener(handler2.mapためです。handler.map

handler2.getMap()したがって、 orを使用しますhandler.map.getServiceObject()(前者はショートカットです)。

もう 1 つ: 関数のプロバイダー キーを使用してマップ オプションを渡すことができますbuildMap

作業コードは次のとおりです。

var handler2 = Gmaps.build('Google');
handler2.buildMap({ provider: { zoom: 1 }, internal: {id: 'map'}}, function(){
  // I assume this is the way you retrieve the amrkers array
  var json_data = <%=raw @hash.to_json %>;
  var markers = handler2.addMarkers(json_data);

  _.each(json_data, function(json, index){
      var marker  = markers[index];
      json.marker = marker;
      google.maps.event.addListener(handler2.getMap(), 'click', function( event ){
        var latlong = document.getElementById("latlong");
        latlong.innerHTML =( "Latitude: "+event.latLng.lat()+" "+", longitude: "+event.latLng.lng() );
      });
  });
  handler2.bounds.extendWith(markers);
  handler2.fitMapToBounds();
});
于 2014-03-06T07:48:19.607 に答える