首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Google地图进行地理围栏

使用Google地图进行地理围栏
EN

Stack Overflow用户
提问于 2011-10-31 18:49:04
回答 2查看 3.5K关注 0票数 1

我正在尝试让人们在谷歌地图上画一个矩形,并存储bottomLeft和topRight坐标。

我知道我可以按代码绘制一个矩形(参见:http://code.google.com/intl/nl-NL/apis/maps/documentation/javascript/reference.html#Rectangle),但是在我可以从我的DB加载边界之前,人们首先需要自己定义它:)

所以我的问题是,如何让人们在Google Maps (API v3)上绘制一个矩形,并存储bottomLeft和topRight角的坐标?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-07 23:40:11

通过查看事件,它已经开始工作了。我花了很多时间制作:)

这就是我为需要它的人做的事情:

代码语言:javascript
运行
复制
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
  });
}
票数 4
EN

Stack Overflow用户

发布于 2011-11-01 01:46:34

如果我理解正确的话,你需要一种方法让用户输入一些折线/多边形。如果是这样的话-看看这个example,其中多边形是通过单击地图创建的。它使用了一些类PolygonCreator和jquery。您可以采用此方法,并将结果保存在表单字段中(有多种选择: JSON或您自己的序列化方法)

如果您只需要在地图上显示多边形,那么您甚至可以利用geometry.encoding library并将编码折线存储到数据库中。或者,如果您要使用空间查询(例如,检测某个点是否落入您的多边形中),您最好使用某种类型的空间扩展:MySQL spatial extensions、PostGIS等。在MySQL中,您可以将折线存储到PolylinePolygon类型的列中,这是基于OpenGIS格式的。坦率地说,在stackoverflow上有一大堆相关的信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7952674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档