保存谷歌地图多边形作为铁轨记录

时间:2014-09-17 07:19:09

标签: google-maps google-maps-api-3 ruby-on-rails-3.2 postgis

作为rails 3.2.18 postGIS启用的应用程序需要从google maps API捕获多边形数据。

js如下:

  var poly, map;
  var markers = [];
  var path = new google.maps.MVCArray;

  function initialize() {
    var roma = new google.maps.LatLng(41.877, 12.480);

    map = new google.maps.Map(document.getElementById("map"), {
      zoom: 7,
      center: roma,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });


    poly = new google.maps.Polygon({
      strokeWeight: 3,
      fillColor: '#5555FF'
    });
    poly.setMap(map);
    poly.setPaths(new google.maps.MVCArray([path]));

    google.maps.event.addListener(map, 'click', addPoint);
  }

  function addPoint(event) {
    path.insertAt(path.length, event.latLng);

    var marker = new google.maps.Marker({
      position: event.latLng,
      map: map,
      draggable: true
    });
    markers.push(marker);
    marker.setTitle("#" + path.length);

    google.maps.event.addListener(marker, 'click', function() {
      marker.setMap(null);
      for (var i = 0, I = markers.length; i < I && markers[i] != marker; ++i);
      markers.splice(i, 1);
      path.removeAt(i);
      }
    );

    google.maps.event.addListener(marker, 'dragend', function() {
      for (var i = 0, I = markers.length; i < I && markers[i] != marker; ++i);
      path.setAt(i, marker.getPosition());
      }
    );
  }

当地图生成多边形时,我想在第一个实例中查看LatLng点(跟踪正在生成的内容),但最终保存点。

第一个问题是LatLng(谷歌)与Lon / Lat(PostGIS)。虽然有is always the possibility of flipping the data,但我只是假设避免它。这意味着要解析一些数据。

那么如何将多边形点单独或作为LonLat格式的多边形捕获到数据库? [请记住,我真的不精通js ......]

1 个答案:

答案 0 :(得分:0)

我可能想要对ruby脚本发出一个AJAX请求,然后将详细信息保存到数据库中。您可以访问事件中的各个纬度和经度值,如下所示:

event.latLng.lat()
event.latLng.lng()

或者确实在返回LatLng对象的任何内容上使用lat()lng()函数。请参阅文档:https://developers.google.com/maps/documentation/javascript/reference#LatLng