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

百度地图开放平台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 API对应覆盖物(点、线、面等)类接口对其进行属性(如颜色、线宽等)设置、编辑(如开启线顶点编辑等)等功能。基于Baidu Map API 1.4。

注:JavaScript 开源库不支持极速版JavaScript API。

好了 ,上面介绍完了,那我们可以开始搞。先看下效果图,

这里绘制了四个坐标点,全部打印出来如下

准备工作,先引入百度地图API文件

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=密钥需申请"></script>
<!--加载鼠标绘制工具-->
<script type="text/javascript" src="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.js"></script>
<link rel="stylesheet" href="http://api.map.baidu.com/library/DrawingManager/1.4/src/DrawingManager_min.css" />

html代码

<div id="allmap" style="overflow:hidden;zoom:1;position:relative;">
        <div id="map" style="height:100%;-webkit-transition: all 0.5s ease-in-out;transition: all 0.5s ease-in-out;"></div>
    </div>
    <div id="result">
        <input type="button" value="获取绘制的覆盖物个数" onclick="alert(overlays.length)"/>
        <input type="button" value="清除所有覆盖物" onclick="clearAll()"/>
    </div>

javascript代码

// 百度地图API功能
    var map = new BMap.Map(‘map‘);
    var poi = new BMap.Point(116.307852,40.057031);
    map.centerAndZoom(poi, 16);//设置中心点坐标和地图级别
    map.enableScrollWheelZoom(); 

   //鼠标绘制完成回调方法   获取各个点的经纬度
    var overlays = [];
    var overlaycomplete = function(e){
        overlays.push(e.overlay);
        var path = e.overlay.getPath();//Array<Point> 返回多边型的点数组
        for(var i=0;i<path.length;i++){
            console.log("lng:"+path[i].lng+"\n lat:"+path[i].lat);
        }
    };
    var styleOptions = {
        strokeColor:"red",    //边线颜色。
        fillColor:"red",      //填充颜色。当参数为空时,圆形将没有填充效果。
        strokeWeight: 3,       //边线的宽度,以像素为单位。
        strokeOpacity: 0.8,       //边线透明度,取值范围0 - 1。
        fillOpacity: 0.6,      //填充的透明度,取值范围0 - 1。
        strokeStyle: ‘solid‘ //边线的样式,solid或dashed。
    }
    //实例化鼠标绘制工具
    var drawingManager = new BMapLib.DrawingManager(map, {
        isOpen: false, //是否开启绘制模式
        enableDrawingTool: true, //是否显示工具栏
        drawingMode:BMAP_DRAWING_POLYGON,//绘制模式  多边形
        drawingToolOptions: {
            anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
            offset: new BMap.Size(5, 5), //偏离值
            drawingModes:[
                BMAP_DRAWING_POLYGON
            ]
        },
        polygonOptions: styleOptions //多边形的样式
    });

     //添加鼠标绘制工具监听事件,用于获取绘制结果
    drawingManager.addEventListener(‘overlaycomplete‘, overlaycomplete);
    function clearAll() {
        for(var i = 0; i < overlays.length; i++){
            map.removeOverlay(overlays[i]);
        }
        overlays.length = 0
    }

以上鼠标绘制主要用到类BMapLib.DrawingManager,具体参数使用可查看http://api.map.baidu.com/library/DrawingManager/1.4/docs/symbols/BMapLib.DrawingManager.html

需要注意的是drawingToolOptions可选参数里面的drawingModes,工具栏上可以选择出现的绘制模式,将需要显示的DrawingType以数组型形式传入,如[BMAP_DRAWING_MARKER, BMAP_DRAWING_CIRCLE] 将只显示画点和画圆的选项,总共有以下五个常量,可根据自己情况选择是否添加显示

BMAP_DRAWING_MARKER 画点
BMAP_DRAWING_CIRCLE 画圆

BMAP_DRAWING_POLYLINE 画线

BMAP_DRAWING_POLYGON 画多边形

BMAP_DRAWING_RECTANGLE 画矩形

在回调overlaycomplete这个地方e.overlay.getPath()返回多边型的点数组Array<Point>,参考类Polygon

http://developer.baidu.com/map/reference/index.php?title=Class:覆盖物类/Polygon

如果知道某个地理位置名称,想要一开始就根据这个地理位置名称去设置中心点坐标,可以通过对地址解析获取经纬度然后再设置中心点坐标

// 创建地址解析器实例
    var myGeo = new BMap.Geocoder();
    // 将地址解析结果显示在地图上,并调整地图视野
    myGeo.getPoint("北京市海淀区上地10街", function(point){
        if (point) {
            map.centerAndZoom(point, 16);
            map.addOverlay(new BMap.Marker(point));
        }else{
            alert("您选择地址没有解析到结果!");
        }
    }, "北京市");
时间: 2024-10-28 06:45:33

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

Android百度地图之自定义绘制功能

我们可以在地图上绘制各种自定义的图形,包括点.折线.圆.多边形等等,尤其绘制点和折线非常实用,点可以用来标识所处的位置,折线可以用来描述走过的轨迹,结合前面GPS定位功能可以做出一些非常有意思的应用,下面应用百度Demo实现绘制的基本功能,代码如下: Activity: package com.home; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.

关于 WebBrowser调用百度地图API 鼠标滚轮缩放地图级别失灵的解决办法

在桌面程序下 百度地图API的鼠标缩放地图功能可能会失灵无效! 这个原因不是API的问题 小弟试了下在WEB上面是没有问题的 于是考虑可能是WebBrowser的获取焦点问题,于是在主窗体 添加了一个窗体激活事件 如下 //小弟用的是WPF所以是Window_Activated //如果你用的是Winform就是 Form1_Activated(object sender, EventArgs e)事件 private void Window_Activated(object sender, E

百度地图申请KEY,定位和获取周边热点

百度地图申请key 一 打包: 1.先用android studio 生成 key.store 2.点击Build--Generate Signed APK... 3.create new... 4.输入E:\key.store 5.输入密码 6.key下的Alias中输入key 7.输入key的密码 8.Certificate中输入..随便输入,点OK完成 9.返回来,输入密码.key alias中输入刚刚的key 10.下一步 二 获取SHA1 的值 1.打开Android Studio的T

百度地图API绘制带头箭头的折线

源代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css"> body, html,#allmap {width: 100%;height: 100%;overflow: hidden;marg

百度地图多边形点击变色

在应用百度地图多边形时会出现点击多边形名称对应多边形变色 使用如下方法 定义map var pologyMap = new Map(); var curPology; 画多边形时 将多边形放入map pologyMap.set(this.id, bmap.polygon); 点击名称时获取对应多边形设置颜色,之前变色的多边形 颜色还原 var polygon = pologyMap.get(parseInt(areaid)); if (curPology != null) { curPology

零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(基础篇)

实现目的:爬取昆明市范围内的全部中学数据,包括名称.坐标. 先进入基础篇,本篇主要讲原理方面,并实现步骤分解,为python代码编写打基础. 因为是0基础开始,所以讲得会比较详细. 如实现目的所讲,爬取昆明市全部中学数据,就是获取百度地图上昆明市范围内所有关键字带中学的地理信息数据(兴趣点). 怎么把百度地图上的数据抓取下来呢? 以下是教程: 本篇目录如下: 1. 百度地图开放平台注册,AK获取 2.关于ak的说明 3.请求URL说明 4.百度地图坐标拾取器 5.以坐标范围获取兴趣点POI 6.

百度地图开发,标记只能显示在北京地图上T_T

============问题描述============ public class MainActivity extends Activity {       MapView mMapView = null;       BaiduMap mBaiduMap; // UI相关 Button resetBtn; Button clearBtn;     @Override       protected void onCreate(Bundle savedInstanceState) {     

百度地图的简单使用 ——html js

一.简介 百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用,包含了构建地图基本功能的各种接口,提供了诸如本地搜索.路线规划等数据服务. 基本地图功能:展示(支持2D图.3D图.卫星图).平移.缩放.拖拽等. 地图控件展示功能:可以在地图上添加/删除鹰眼.工具条.比例尺.自定义版权.地图类型及定位控件,并可以设置各类控件的显示位置. 覆盖物功能:支持在地图上添加/删除点.线.面.热区.行政区划.用户自定义覆

百度地图_api

这一天主要讲的是百度地图api的使用,由于百度有很详细的开发文档了,所以我这里只做一个大概的笔记 百度地图API的使用 1,入门 1.1,三大核心 ①SDKInitializer 整个百度的初始化工具类,引擎 ②MapView 用来显示地图的控件 ③baiduMap 相当于控制器,缩放,旋转,移动 1.2,准备工作(到百度地图LBS开放平台上查看) 获取API Key,按网上的帮助文档走步骤 获取SHA1码 百度地图的Key和应用是相互绑定的,一个Key对应一个应用. 1.3,创建工程拷贝jar