Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 如何获取地图上任何点击点的横向位置?Gmaps4rails_Ruby On Rails 4_Gmaps4rails_Gmaps4rails2 - Fatal编程技术网

Ruby on rails 4 如何获取地图上任何点击点的横向位置?Gmaps4rails

Ruby on rails 4 如何获取地图上任何点击点的横向位置?Gmaps4rails,ruby-on-rails-4,gmaps4rails,gmaps4rails2,Ruby On Rails 4,Gmaps4rails,Gmaps4rails2,您好,我正在寻找一种方法来获取地图上任何点击点的lat,long,并将该信息存储在id标记中。我使用的是gmaps4rails v2,我当前的代码如下: <script type="text/javascript"> var handler2 = Gmaps.build('Google'); handler2.buildMap({ provider: { }, internal: {id: 'map'}}, function(){ // I assume this

您好,我正在寻找一种方法来获取地图上任何点击点的lat,long,并将该信息存储在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>

var handler2=Gmaps.build('Google');
buildMap({provider:{},internal:{id:'map'}},function(){
//我假设这是检索amrkers数组的方式
var json_data=;
var markers=handler2.addMarkers(json_数据);
_.each(json_数据、函数(json、索引){
var标记=标记[索引];
json.marker=marker;
google.maps.event.addListener(handler2.map,'click',函数(事件){
var latlong=document.getElementById(“latlong”);
latlong.innerHTML=(“纬度:”+event.latLng.lat()+“+”,经度:“+event.latLng.lng());
});
});
handler2.bounds.extendWith(标记);
handler2.getMap().setZoom(1);
});
这是当前单击点的横向长度。

问题是,无论我在地图上单击什么位置,侦听器都没有响应,我的id标记“latlong”也没有得到任何结果。感谢您的帮助。

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

因此,要么使用
handler2.getMap()
要么使用
handler.map.getServiceObject()
(前者是一种快捷方式)

还有一件事:您可以使用
buildMap
函数的provider键传递映射选项

以下是工作代码:

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();
});
var handler2=Gmaps.build('Google');
buildMap({provider:{zoom:1},内部:{id:'map'}},函数(){
//我假设这是检索amrkers数组的方式
var json_data=;
var markers=handler2.addMarkers(json_数据);
_.each(json_数据、函数(json、索引){
var标记=标记[索引];
json.marker=marker;
google.maps.event.addListener(handler2.getMap(),“单击”,函数(事件){
var latlong=document.getElementById(“latlong”);
latlong.innerHTML=(“纬度:”+event.latLng.lat()+“+”,经度:“+event.latLng.lng());
});
});
handler2.bounds.extendWith(标记);
handler2.fitMapToBounds();
});