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

百度地图开放平台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。

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

78f5a7d229f1ad1f614acedee4856261.png

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

33b37b1c1cdbfd7b4ad396f8c9b2659f.png

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

html代码

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 返回多边型的点数组

for(var i=0;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,参考类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("您选择地址没有解析到结果!");

}

}, "北京市");

时间: 09-25

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值