作为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 ......]
答案 0 :(得分:0)
我可能想要对ruby脚本发出一个AJAX请求,然后将详细信息保存到数据库中。您可以访问事件中的各个纬度和经度值,如下所示:
event.latLng.lat()
event.latLng.lng()
或者确实在返回LatLng对象的任何内容上使用lat()
和lng()
函数。请参阅文档:https://developers.google.com/maps/documentation/javascript/reference#LatLng