2014-03-05 51 views
2

你好,我正在寻找一种方式来获得经纬度,任何点击点在地图上,并有该信息存储在一个ID标记。我使用gmaps4rails V2和我当前的代码如下:如何获取地图上任何点击点的经纬度位置? Gmaps4rails

<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标签得到任何结果“经纬度”。任何帮助表示赞赏谢谢。

回答

3

问题是addListener(handler2.map,因为handler.map是一个gmaps4rails对象,而不是谷歌地图对象。

因此,无论您使用handler2.getMap()handler.map.getServiceObject()(前者是捷径)。

另一件事:您可以将buildMap函数的提供者密钥传递给map选项。

这里是工作代码:

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(); 
}); 
+0

THANK YOU SO MUCH! – ominousbit

+0

我复制了你的代码,但是找不到'handler' – newBike

+0

@poc它是一个错字 – apneadiving

相关问题