百度地图使用折线、多边形覆盖物绘制或编辑行政区域

本文详细介绍百度地图API的各种资源,包括开放平台、JavaScript API版本、类参考、示例DEMO、AK申请、开源库及坐标拾取系统。涵盖地图开发所需的关键信息,如使用折线、多边形覆盖物绘制或编辑行政区域的方法。

百度地图开发常用网站

1、百度地图开放平台

http://lbsyun.baidu.com/

2、百度地图 Javascript API

3、JavaScript API v2.0类参考

http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html

4、百度地图示例DEMO(JavaScript API v2.0)

http://lbsyun.baidu.com/jsdemo.htm#a1_2

5、百度地图 ak 申请:(JavaScript API v2.0)

http://lbsyun.baidu.com/index.php?title=jspopular/guide/getkey

6、开源库(JavaScript API v2.0):鼠标绘制工具条、热力图、聚合marker、测距工具、自定义覆盖物、自定义信息窗口、路书等功能

http://lbsyun.baidu.com/index.php?title=jspopular/openlibrary

7、百度地图坐标拾取系统

http://api.map.baidu.com/lbsapi/getpoint/index.html

说明

项目中使用 JavaScript API v2.0 版本,当然也可以使用最新版 V3.0。

JavaScript API Lite是移动端浏览器上构建地图应用


百度地图使用折线、多边形覆盖物绘制或编辑行政区域

1、百度地图 ak 申请:(JavaScript API v2.0)

http://lbsyun.baidu.com/index.php?title=jspopular/guide/getkey

2、实现效果图如下:

首先说明一下,这里分别使用折线(左边) 和 多边形覆盖物(右边)绘制 河源市 和 梅州市行政区域。下图中可以看出区别:

这里用的的测试数据行政区域坐标,是通过这篇文章的内容获取的 :百度地图API获取行政区域边界(省、市、区县)

编辑功能,操作说明:

1、从折线 或 多边形覆盖物中,右键点击编辑区域功能,此时覆盖物变为编辑状态(出现很多小方块及连接线)

2、放大地图,任意拖动小方块即可编辑(调整)区域数据。

3、编辑好数据后,从折线 或 多边形覆盖物中,右键点击保存区域功能,即可得到新的区域坐标数据。

3、网页源码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>百度地图使用折线、多边形覆盖物绘制或编辑行政区域</title>
		<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你在百度地图开放平台申请的ak"></script>
		<!--  你在百度地图开放平台申请的ak -->
	</head>
	<body>
		<div id="allmap" style="position: absolute; width: 100%; top: 0px; bottom: 0px"></div>
		<script type="text/javascript">
		//添加鼠标触发事件
		function addMarkerClickHandler(content, e) {
            var isEditing = false;
            e.addEventListener("mousedown", function (e) {
                var markerMenua = new BMap.ContextMenu();
                var txtMenuItema = [
                        {
                            text: "编辑" + content,
                            callback: function () {
                                var p = e.target;
                                if (isEditing == true) {
                                    alert("您当前处于编辑状态,请拖动小方块改变辖区范围或保存辖区!");
                                    return;
                                } else {
                                    if (p instanceof BMap.Label) {
                                        layer.msg(p.content);
                                    } else if (p instanceof BMap.Circle) {
                                        var tips = "该覆盖物是圆,圆的半径是:" + p.getRadius() + ",圆的中心点坐标是:" + p.getCenter().lng + "," + p.getCenter().lat;
                                        alert(p.content);
                                    } else if (p instanceof BMap.Polygon) {
                                        getpoligon = p;
                                        alert("当前编辑的辖区包含的的坐标个数是:" + p.getPath().length);
                                        p.enableEditing();
                                        isEditing = true;
                                    } else {
                                        getpoligon = p;
                                        p.enableEditing();
                                        isEditing = true;
                                        alert("无法获知该覆盖物类型:" + p.getPath().length);
                                    }
                                }
                            }
                        },
                        {
                            text: "保存" + content,
                            callback: function () {
                                var strpara = "";
                                var posiall = [];
                                if (isEditing == false) {
                                    alert("您还未处于编辑状态,请点击编辑辖区!");
                                    return;
                                } else {
                                    if (confirm('您确定要保存辖区吗?') == true) {
                                        var strpara = "";
                                        var posiall = [];
                                        posiall = e.target.getPath();
                                        for (var i = 0; i < posiall.length; i++) {
                                            if (i > 0) {
                                                strpara += ";" + posiall[i].lng + "," + posiall[i].lat;
                                            } else {
                                                strpara += posiall[i].lng + "," + posiall[i].lat;
                                            }
                                        }
                                        console.log("------------------------------- 获取当前多边形坐标数据-------------------------------");
                                        console.log("获取当前多边形坐标数据成功,坐标个数为:" + posiall.length);
                                        console.log("坐标数据:" + strpara);
                                        alert("保存成功!测试信息。。。当前覆盖物坐标数: " + posiall.length);
                                        
                                    }
                                }
                            }
                        }];
                markerMenua.addItem(new BMap.MenuItem(txtMenuItema[0].text,
                        txtMenuItema[0].callback, 120));
                markerMenua.addItem(new BMap.MenuItem(txtMenuItema[1].text,
                        txtMenuItema[1].callback, 120));
                e.target.addContextMenu(markerMenua);
            });
     
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值