百度地圖框選標註座標點功能
在百度地圖上面畫矩形,不規則多邊形,圓形,線等,並獲取框選的標註座標點功能;js判斷座標點是否在某個範圍內
MapSelect.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MapSelect.aspx.cs" Inherits="BaiduMapSelect.MapSelect" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
body, html, #allmap {
font-family: "微軟雅黑";
height: 95%;
margin: 0;
overflow: hidden;
width: 100%;
}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=OGTkT2pvBcNb*******Skzxmm9mek"></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" />
<!--載入檢索資訊視窗-->
<%--<script type="text/javascript" src="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.js"></script>
<link rel="stylesheet" href="http://api.map.baidu.com/library/SearchInfoWindow/1.4/src/SearchInfoWindow_min.css" />--%>
<%--<script type="text/javascript" src="http://api.map.baidu.com/library/GeoUtils/1.2/src/GeoUtils_min.js"></script>--%>
<script type="text/javascript" src="http://api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay_min.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></script>
</head>
<body>
<div id="allmap" style="overflow: hidden; position: relative; zoom: 1;">
<div id="map" style="-webkit-transition: all 0.5s ease-in-out; height: 95%; transition: all 0.5s ease-in-out;"></div>
</div>
<input type="button" value="清除所有覆蓋物" onclick="clearAll()" />
<input type="button" value="獲取區域選擇的標註點集合" onclick="getOverlayPath()" />
<script type="text/javascript">
// 百度地圖API功能
var map = new BMap.Map("map");
var point = new BMap.Point(113.323685, 23.130522);
map.centerAndZoom(point, 15);
//map.centerAndZoom(point, 8);
map.enableScrollWheelZoom(true); //開啟滑鼠滾輪縮放
// 編寫自定義函式,建立標註
function addMarker(point, id) {
var marker = new BMap.Marker(point);
map.addOverlay(marker);
addClickHandler("id為:" + id, marker);
}
var opts = {
width: 100, // 資訊視窗寬度
height: 80, // 資訊視窗高度
title: "資訊視窗", // 資訊視窗標題
enableMessage: false //設定允許資訊窗傳送短息
};
function addClickHandler(content, marker) {
marker.addEventListener("click", function (e) {
openInfo(content, e);
}
);
}
function openInfo(content, e) {
var p = e.target;
var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);
var infoWindow = new BMap.InfoWindow(content, opts); // 建立資訊視窗物件
map.openInfoWindow(infoWindow, point); //開啟資訊視窗
}
// 隨機向地圖新增25個標註
var bounds = map.getBounds();
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var lngSpan = Math.abs(sw.lng - ne.lng);
var latSpan = Math.abs(ne.lat - sw.lat);
var allPointArray = [];
var markers = [];
for (var i = 0; i < 20; i++) {
var point = new BMap.Point(sw.lng + lngSpan * (Math.random() * 0.7), ne.lat - latSpan * (Math.random() * 0.7));
allPointArray.push({ Point: point, Id: i });
addMarker(point, i);
//markers.push(point);
}
//最簡單的用法,生成一個marker陣列,然後呼叫markerClusterer類即可。
//var markerClusterer = new BMapLib.MarkerClusterer(map, { markers: markers });
var overlays = [];
var overlaycomplete = function (e) {
clearAll();
overlays.push(e.overlay);
e.overlay.enableEditing();
e.overlay.addEventListener("lineupdate", function (e) {
showLatLon(e.currentTarget);
});
var pointArray = e.overlay.getPath();
map.setViewport(pointArray); //調整視野
};
var styleOptions = {
strokeColor: "red", //邊線顏色。
fillColor: "red", //填充顏色。當引數為空時,圓形將沒有填充效果。
strokeWeight: 2, //邊線的寬度,以畫素為單位。
strokeOpacity: 0.5, //邊線透明度,取值範圍0 - 1。
fillOpacity: 0.3, //填充的透明度,取值範圍0 - 1。
strokeStyle: 'solid' //邊線的樣式,solid或dashed。
};
//例項化滑鼠繪製工具
var drawingManager = new BMapLib.DrawingManager(map, {
isOpen: false, //是否開啟繪製模式
enableDrawingTool: true, //是否顯示工具欄
drawingToolOptions: {
anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
offset: new BMap.Size(5, 5), //偏離值
},
circleOptions: styleOptions, //圓的樣式
polylineOptions: styleOptions, //線的樣式
polygonOptions: styleOptions, //多邊形的樣式
rectangleOptions: styleOptions //矩形的樣式
});
//新增滑鼠繪製工具監聽事件,用於獲取繪製結果
drawingManager.addEventListener('overlaycomplete', overlaycomplete);
function clearAll() {
for (var i = 0; i < overlays.length; i++) {
map.removeOverlay(overlays[i]);
}
overlays.length = 0;
}
function getOverlayPath() {
var box = overlays[overlays.length - 1];
var pointArray = box.getPath();
map.setViewport(pointArray); //調整視野
var bound = map.getBounds(); //地圖可視區域
var s = "圈選的ID有:";
for (var i = 0; i < allPointArray.length; i++) {
if (bound.containsPoint(allPointArray[i].Point) == true) {
if (isInsidePolygon(allPointArray[i].Point, pointArray))
s += allPointArray[i].Id + ",";
}
}
alert(s);
}
var overlaysCache = [];
function showLatLon(a) {
var len = a.length;
var arr = [];
for (var i = 0; i < len - 1; i++) {
arr.push([a[i].lng, a[i].lat]);
}
this.overlaysCache = arr;
}
//判斷一個標註點是否在多邊形裡
//pt標註點,poly多邊形陣列
function isInsidePolygon(pt, poly) {
for (var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
((poly[i].lat <= pt.lat && pt.lat < poly[j].lat) || (poly[j].lat <= pt.lat && pt.lat < poly[i].lat)) &&
(pt.lng < (poly[j].lng - poly[i].lng) * (pt.lat - poly[i].lat) / (poly[j].lat - poly[i].lat) + poly[i].lng) &&
(c = !c);
return c;
}
</script>
</body>
</html>
執行結果如圖:
相關文章
- 百度地圖之標註一組地理座標地圖
- 百度地圖API新增自定義標註多點標註地圖API
- JN專案-百度地圖座標偏移地圖
- 百度地圖:根據位置獲取座標地圖
- 百度地圖API : 自定義標註圖示地圖API
- 百度地圖計算兩座標點之間距離計算地圖
- 騰訊地圖定位及座標解析地圖
- 騰訊地圖拾取座標地圖
- gcoord: 轉換WGS84、GCJ02、BD09座標,轉換百度高德地圖座標系GC地圖
- ArcGIS API for Silverlight 中根據座標點在地圖上打標記API地圖
- 百度地圖API開發的快速使用和新增大量座標點的幾種方法地圖API
- iOS根據地址在地圖上展示座標iOS地圖
- iOS中地圖經緯度座標轉換iOS地圖
- 地圖投影系列介紹(二)_ 地理座標系地圖
- ArcGIS API for JavaScript根據兩個點座標在地圖上畫線APIJavaScript地圖
- 百度地圖BMap實現在行政區域內做標註地圖
- 百度地圖拾取座標工具-toolfk程式設計師線上工具地圖程式設計師
- iOS地球座標、火星座標和百度座標之間轉換(Swift3.0)iOSSwift
- openlayers根據座標在地圖上劃區域地圖
- ArcGIS地圖投影與座標系轉換的方法地圖
- UIScrollView 在手指點選的座標處放大UIView
- canvas座標系原點Canvas
- canvas 座標系原點Canvas
- GPS座標互轉:WGS-84(GPS)、GCJ-02(Google地圖)、BD-09(百度地圖)GCGo地圖
- 百度座標轉換API使用API
- 高德地圖聚合點,增加所有點選標記,點選後展示該聚合點下所有資訊地圖
- [外掛擴充套件]EasyGo,簡單GO!文字輸入框增強器(取色,時間選擇,地圖座標獲取)套件Go地圖
- 地圖免費標註公司位置,怎麼做業務分佈地圖地圖
- 高德地圖api標記點和線段重合點選響應問題地圖API
- dcat欄位擴充套件:地圖拖拽設定xy座標套件地圖
- 【地圖API】為何您的座標不準?如何糾偏?地圖API
- Excel轉百度座標系(AngularJS)ExcelAngularJS
- js中根據x,y 座標模擬點選事件JS事件
- 未經投影的地理座標系如何顯示為平面地圖地圖
- 百度地圖開發-繪製點線提示框 07地圖
- vue 實現高德座標轉GPS座標Vue
- D3.js在svg地圖上標點JSSVG地圖
- app直播原始碼,選取矩形框並進行文字標註APP原始碼