地图上绘制多边形

根据输入的一组点的坐标,生成对应的封闭多边形。

实现代码

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
        <title>显示多边形</title>
        <link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css"/>
        <script src="http://webapi.amap.com/maps?v=1.3&key=5bc7ab8efc62334c67887ecd3c21a3a7"></script>
        <script type="text/javascript" src="http://cache.amap.com/lbs/static/addToolbar.js"></script>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
        <script>
        $(document).ready(function(){
                var map;
                map = new AMap.Map(‘mapContainer‘, {
                    resizeEnable: true,
                    center: [116.397428, 39.90923],
                    zoom: 13
                });

                map.plugin(["AMap.ToolBar"],function(){
                    toolBar=new AMap.ToolBar();
                    map.addControl(toolBar);
                });

            function add_circle(x, y, color) {
                circle = new AMap.Circle({
                    center:new AMap.LngLat(x, y),
                    radius:10,
                    strokeColor: color,
                    strokeOpacity: 1,
                    strokeWeight: 3,
                    fillColor: color,
                    fillOpacity: 3
                });
                circle.setMap(map);
            }

            function add_marker(x, y, index){
                var marker = new AMap.Marker({ //添加自定义点标记
                    map: map,
                    position: [x, y], //基点位置
                    offset: new AMap.Pixel(-17, -42), //相对于基点的偏移位置
                    draggable: true,  //是否可拖动
                    content: "<p style=‘font-size:10px; color:blue‘>"+index+"</p>"   //自定义点标记覆盖物内容
                });
                marker.setMap(map);
            }

            function add_polygon(polygonArr){
                var  polygon = new AMap.Polygon({
                    path: polygonArr,//设置多边形边界路径
                    strokeColor: "#FF33FF", //线颜色
                    strokeOpacity: 0.2, //线透明度
                    strokeWeight: 3,    //线宽
                    fillColor: "#1791fc", //填充色
                    fillOpacity: 0.35//填充透明度
                });
                polygon.setMap(map);
            }

            $(‘#show‘).click(function(){
                var polygonArr=new Array();
                var p;
                var points=$.parseJSON($(‘#content‘).val());

                add_circle(points[0][0]/1000000, points[0][1]/1000000, "red");

                for(var i=0;i<points.length;i++) {
                    p=points[i];
                    var x = p[0]/1000000;
                    var y = p[1]/1000000;
                    polygonArr.push([x, y]);
                    add_circle(x, y, ‘blue‘);
                    add_marker(x, y, i);
                } 

                add_polygon(polygonArr);
                add_circle(p[0]/1000000, p[1]/1000000, "green"); 

                map.setZoomAndCenter(13, new AMap.LngLat(p[0]/1000000, p[1]/1000000));
            });                

        });
        </script>

        <style>

        .container {
            width:1300px;
            height:100%;
            margin:0 auto;

        }

        #mapContainer {
            width:600px;
            height:600px;
            margin:5px 10px;
            float:left;

            background-color:lightblue;
        }

        #content{
            width:600px;
            height:600px;
            font-size:  12px;
            margin:5px 10px;
            float:left;
        }
        #show{
            width: 80px;
            height: 60px;
            font-size:12px;
            margin: 5px 10px;
            float: left;
            clear: both;
        }
        p{
            float: left;
            clear: both;
        }
        </style>

    </head>
    <body>
        <div class="container">
            <h1>Show Polygon</h1>
            <div class="row">
                <div class="col">
                    <textarea id="content" rows="30"></textarea>
                </div>
                <div class="col">
                    <div id="mapContainer"></div>
                </div>
            </div>
            <input type= "button" id="show" value="Show" />
            <p>红色为起点,绿色为终点,蓝色为中间结点,数字为结点编号</p>
    </body>
</html>

实现效果

时间: 2024-08-09 22:02:41

地图上绘制多边形的相关文章

iOS开发之在地图上绘制出你运行的轨迹

首先我们看下如何在地图上绘制曲线.在Map Kit中提供了一个叫MKPolyline的类,我们可以利用它来绘制曲线,先看个简单的例子. 使用下面代码从一个文件中读取出经纬度,然后创建一个路径:MKPolyline实例. 1 -(void) loadRoute 2 { 3 NSString* filePath = [[NSBundle mainBundle] pathForResource:@"route" ofType:@"csv"]; 4 NSString* fi

如何在地图上绘制骑行线图

常常需要标注骑行路线图,有什么方法呢? 1.使用兰图绘 2.使用"我是游客"身份进入 3.输入地图名称,然后"新建地图"->"打开地图" 4.使用"自由线" 5.在地图上标识即可. 原文地址:https://www.cnblogs.com/windel/p/9787216.html

百度地图中拖拽地图后,多边形消失的问题

问题描述: 在手机端,在百度地图中绘制多边形区域,当拖动地图时,多边形区域会消失一部分,继续拖动,会继续再消失,拖动到原位置后,又重新现显示完全 代码: var points = [{"lng":116.4935302734375,"lat":40.0506591796875},{"lng":116.4935302734375,"lat":40.05615234375},{"lng":116.4880371

使用高德地图绘制多边形区域

最近遇到一个需求,在网页上面编辑多边形的区域,并且需要能够判断一个点是否在这个多边形区域里面. 看了一下高德地图的jsapi,简单的做了一个demo. 1.你需要一个高德地图的账号,注册地址点击这里 2.登陆进去创建一个应用,这个时候就会给你一个对应的Key 3.查看高德地图的的demo,进入示例中心 4.学习一下左侧分类里面的 点标记 的示例,点标记里有涉及到高德地图事件,以及基础的类. 5.看完上面的,接下来我们接着学习折线,多边形,圆,这里我们就可以接触到AMap.Polygon这个类,以

百度地图实现鼠标绘制多边形并获取所有点坐标

百度地图开放平台http://lbsyun.baidu.com/ 这里使用的是Javascript API http://lbsyun.baidu.com/index.php?title=jspopular 实现鼠标绘制多边形主要用到百度地图JavaScript开源库鼠标绘制工具条库(http://lbsyun.baidu.com/index.php?title=open/library),提供鼠标绘制点.线.面.多边形(矩形.圆)的编辑工具条的开源代码库.且用户可使用JavaScript AP

[转]利用matlab绘制地图上的点、线、面

原文链接:https://blog.csdn.net/rumswell/article/details/16927565 一.绘制点 %生成背景地图地图 h = worldmap('France'); %读取和显示大陆架 landareas = shaperead('landareas.shp','UseGeoCoords', true); geoshow (landareas, 'FaceColor', [1 1 .5]); %埃菲尔铁塔的坐标 TowerLon = 2.28;%经度坐标 To

C# 计算地图上某个坐标点的到多边形各边的距离

原文:C# 计算地图上某个坐标点的到多边形各边的距离 在判断了某个坐标点是否在多边形内后,还有另一个需求就是当我这个坐标点在多边形外部时,我需要计算这个坐标点到多边形的距离是否在一个允许的误差范围内 通过两个位置的经纬度坐标计算距离(C#版本) 转自:https://blog.csdn.net/jasonsong2008/article/details/78423496 经纬坐标系中求点到线段距离的方法 转自C语言版本: https://blog.csdn.net/ufoxiong21/arti

C# 计算地图上某个坐标点的是否在多边形内

原文:C# 计算地图上某个坐标点的是否在多边形内 这个方法引用自群友的博客 https://www.xiaofengyu.com/?p=143 使用百度地图的时候,常常会用到判断一个点是否在一个多边形的范围内,该方法用到的是射线法, 通过修改Javascrpit的代码过来的,射线法的意思就是从点出发和任意的一边的交叉点数为奇数则为在改区域内, 参考文档http://erich.realtimerendering.com/ptinpoly/ public class location { publ

[WebGL入门]十四,绘制多边形

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 这是本次的demo的运行结果 绘制流程 这次终于该绘制多边形了,之前的文章(十一,着色器的编译和连接)中介绍了HTML,顶点着色器和片段着色器,这次看一下javascript从开始到最终的全部处理.如果前两篇文章介绍的内容完全理解的话,这次的内容也应该不难了.或许会有不容易理解的地方,不要着急