Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 在javascript中将lat long转换为地址_Ruby_Google Maps_Geocode_Google Geocoding Api - Fatal编程技术网

Ruby 在javascript中将lat long转换为地址

Ruby 在javascript中将lat long转换为地址,ruby,google-maps,geocode,google-geocoding-api,Ruby,Google Maps,Geocode,Google Geocoding Api,我正在尝试将标记窗口中的显示从lat long更改为地址。我很难理解谷歌API如何做到这一点。我愿意使用GoogleAPI或GeocoderGem,哪一种效果更好。我只是不知道如何将它们中的任何一个包含到我的代码中 var map; function initialize() { //initializing map view var myOptions = { zoom: 13, center: new google.maps.LatLng

我正在尝试将标记窗口中的显示从lat long更改为地址。我很难理解谷歌API如何做到这一点。我愿意使用GoogleAPI或GeocoderGem,哪一种效果更好。我只是不知道如何将它们中的任何一个包含到我的代码中

    var map;
  function initialize() {

    //initializing map view
    var myOptions = {
      zoom: 13,
      center: new google.maps.LatLng(42.32657009662249, -71.06678009033203),
      disableDefaultUI: true,
      panControl: true,
      zoomControl: true,

      scaleControl: true,
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      panControl: true,
      panControlOptions: {
        position: google.maps.ControlPosition.TOP_RIGHT
      },
      zoomControl: true,
      zoomControlOptions: {
        style: google.maps.ZoomControlStyle.LARGE,
        position: google.maps.ControlPosition.TOP_RIGHT
      }
    };
    map = new google.maps.Map(document.getElementById('map_canvas'),
        myOptions);

    //BIKE STUFF
    var bikeLayer = new google.maps.BicyclingLayer();
    bikeLayer.setMap(map);

    <% @Reports.each do |x|%>
      addMarker(<%= x.latitude %>, <%=x.longitude%>);
    <% end %>
  }

  function addMarker(lat, long){
        var marker = new google.maps.Marker({
          position: new google.maps.LatLng(lat, long),
          map: map,
          title: 'REPORT'
        });
        //DROP PIN
        marker.setAnimation(google.maps.Animation.DROP);
        marker.setTitle('DROP');
        //DROP MARKER INFOWINDOW
        var latlng = new google.maps.LatLng(lat, long);
        google.maps.event.addListener(marker, 'click', function(){
          infowindow.open(map, this);
          marker = this
        });
        var infowindow = new google.maps.InfoWindow({
          content:"Lat: " + lat + ", Long: " + long
        });
        //CLOSING MARKER INFOWINDOW
        google.maps.event.addListener(infowindow,'closeclick',function(){
          infowindow.close(map, this); //removes the marker
        });
    }    
  console.log("message")
  google.maps.event.addDomListener(window, 'load', initialize);
var映射;
函数初始化(){
//初始化地图视图
变量myOptions={
缩放:13,
中心:新google.maps.LatLng(42.32657009662249,-71.06678009033203),
disableDefaultUI:true,
泛控制:对,
动物控制:对,
scaleControl:对,
mapTypeId:google.maps.mapTypeId.ROADMAP,
泛控制:对,
全控选项:{
位置:google.maps.ControlPosition.TOP\u右
},
动物控制:对,
ZoomControl选项:{
样式:google.maps.ZoomControlStyle.LARGE,
位置:google.maps.ControlPosition.TOP\u右
}
};
map=new google.maps.map(document.getElementById('map_canvas'),
肌肽);
//自行车用品
var bikeLayer=new google.maps.BicyclingLayer();
bikeLayer.setMap(map);
添加标记(,);
}
功能添加标记(横向、纵向){
var marker=new google.maps.marker({
位置:新google.maps.LatLng(lat,long),
地图:地图,
标题:“报告”
});
//吊针
setAnimation(google.maps.Animation.DROP);
marker.setTitle('DROP');
//下拉标记信息窗口
var latlng=新的google.maps.latlng(lat,long);
google.maps.event.addListener(标记'click',函数(){
打开(地图,这个);
马克=这个
});
var infowindow=new google.maps.infowindow({
内容:“Lat:+Lat+”,Long:+Long
});
//关闭标记信息窗口
google.maps.event.addListener(信息窗口,'closeclick',函数(){
infowindow.close(map,this);//删除标记
});
}    
控制台日志(“消息”)
google.maps.event.addDomListener(窗口“加载”,初始化);

相反,当它在信息窗口中显示内容时,我希望它显示地址

从现有代码开始,显示标记地址的一种方法是将其存储在数据库中(或查询以获取纬度和经度),然后将其传递给“addMarker”调用(更改addMarker函数以接受包含地址的第三个参数后)

未测试:

function addMarker(lat, long, address){
    var marker = new google.maps.Marker({
      position: new google.maps.LatLng(lat, long),
      map: map,
      title: 'REPORT'
    });
    //DROP PIN
    marker.setAnimation(google.maps.Animation.DROP);
    marker.setTitle('DROP');
    //DROP MARKER INFOWINDOW
    var latlng = new google.maps.LatLng(lat, long);
    google.maps.event.addListener(marker, 'click', function(){
      infowindow.open(map, this);
      marker = this
    });
    var infowindow = new google.maps.InfoWindow({
      content:address
    });

如果您还没有存储地址,您可以使用谷歌的地理编码服务作为反向地理编码器,将lat/lng转换为地址

编辑: 您可以从讨论地理编码策略的文档中看到这一点,地理编码器和反向地理编码器服务是相似的,相同的配额和速率限制适用于它们

  • 这是

  • 这是

  • 这是


“您可以使用谷歌的地理编码服务作为反向地理编码器,将lat/lng转换为地址。”是我不确定该如何处理的部分吗?您是否将lat/lng坐标存储在数据库中?您是否也没有相关地址?您希望添加标记的点来自何处?是的,我的坐标存储在数据库中。我数据库中的所有坐标都是lat和long坐标。我希望在地图上显示这些点但是在信息窗口中是地址而不是坐标。但是我不确定如何将坐标转换成地址。