我正在尝试让人们在谷歌地图上画一个矩形,并存储bottomLeft和topRight坐标。
我知道我可以按代码绘制一个矩形(参见:http://code.google.com/intl/nl-NL/apis/maps/documentation/javascript/reference.html#Rectangle),但是在我可以从我的DB加载边界之前,人们首先需要自己定义它:)
所以我的问题是,如何让人们在Google Maps (API v3)上绘制一个矩形,并存储bottomLeft和topRight角的坐标?
发布于 2011-11-07 23:40:11
通过查看事件,它已经开始工作了。我花了很多时间制作:)
这就是我为需要它的人做的事情:
function mapsInitialize()
{
startPoint = new google.maps.LatLng(lat,lon);
options = { zoom: 16, center: startPoint, mapTypeId: google.maps.MapTypeId.HYBRID};
map = new google.maps.Map(document.getElementById("map_canvas"), options);
google.maps.event.addListener(map, 'click', function(event) {
if (drawing == true){
placeMarker(event.latLng);
if (bottomLeft == null) {
bottomLeft = new google.maps.LatLng(event.latLng.Oa, event.latLng.Pa);
}
else if (topRight == null){
topRight = new google.maps.LatLng(event.latLng.Oa, event.latLng.Pa);
drawing = false;
rectangle = new google.maps.Rectangle();
var bounds = new google.maps.LatLngBounds(bottomLeft, topRight);
var rectOptions = {
strokeColor: "#FF0000",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#FF0000",
fillOpacity: 0.35,
map: map,
bounds: bounds
};
rectangle.setOptions(rectOptions);
}
}
});
}
function placeMarker(location) {
var marker = new google.maps.Marker({
position: location,
map: map
});
}发布于 2011-11-01 01:46:34
如果我理解正确的话,你需要一种方法让用户输入一些折线/多边形。如果是这样的话-看看这个example,其中多边形是通过单击地图创建的。它使用了一些类PolygonCreator和jquery。您可以采用此方法,并将结果保存在表单字段中(有多种选择: JSON或您自己的序列化方法)
如果您只需要在地图上显示多边形,那么您甚至可以利用geometry.encoding library并将编码折线存储到数据库中。或者,如果您要使用空间查询(例如,检测某个点是否落入您的多边形中),您最好使用某种类型的空间扩展:MySQL spatial extensions、PostGIS等。在MySQL中,您可以将折线存储到Polyline或Polygon类型的列中,这是基于OpenGIS格式的。坦率地说,在stackoverflow上有一大堆相关的信息。
https://stackoverflow.com/questions/7952674
复制相似问题