var pt1 = new BMap.Point(0,0); var pt2 = new BMap.Point(0,0); var pt3 = new BMap.Point(0,0); var pt4 = new BMap.Point(0,0); //var isTopLeft=false,isRightBottom=false; var isMouseDown=false; var defalutCursor; var isDivision=false;
// 返回IE版本号 var ieVersion = 0; if (/msie (\d+\.\d)/i.test(navigator.userAgent)) { ieVersion = document.documentMode || + RegExp['\x241'] }
// var leftUp; // var rightUp; // var leftDown; // var rightDown;
map.addEventListener("mousedown", function(e){ if(!isDivision){return;} // 由于在IE和非IE浏览器下,e对象对鼠标按下键的返回值不一样 // 所以需要分两种情况判断,当不是鼠标左键时,返回无操作 var e1 = window.event || e; if (e1.button != 0 && !ieVersion || ieVersion && e1.button != 1){ return; } pt1.lng = e.point.lng; pt1.lat = e.point.lat; isMouseDown = true; document.getElementById('leftUp').value = pt1.lng+','+pt1.lat; var rect = new BMap.Polygon([pt1]); rect.setPositionAt(0,pt1); return leftUp; });
var rect = new BMap.Polygon([pt1,pt2,pt3,pt4]); rect.setStrokeWeight(2); rect.setStrokeOpacity(0.8); rect.setStrokeColor("red"); rect.setFillColor("white"); rect.setFillOpacity(0.5); map.addOverlay(rect); document.getElementById('rightUp').value = pt3.lng+','+pt3.lat; document.getElementById('leftDown').value = pt4.lng+','+pt4.lat; document.getElementById('rightDown').value = pt2.lng+','+pt2.lat; var leftUp = new BMap.Point(pt1.lng, pt1.lat); var rightUp = new BMap.Point(pt3.lng,pt3.lat); var leftDown = new BMap.Point(pt4.lng, pt4.lat); var rightDown = new BMap.Point(pt2.lng,pt2.lat); //获得矩形四边的距离 var upDistance = map.getDistance(leftUp,rightUp); var downDistance = map.getDistance(leftDown,rightDown); var leftDistance = map.getDistance(leftUp,leftDown); var rightDistance = map.getDistance(rightUp,rightDown);
<html>
<head>
<style type="text/css">
html{height:100%}
body{height:100%;margin:0px;padding:0px}
div{margin:0px;padding:0px}
.left{float:left;}
.clear{clear:both;}
#container{height:80%;width:50%}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=1.3"></script>
<!--script type="text/javascript" src="division.js"></script-->
</head>
<body>
<div id="container" class="left"></div>
<div class="left">
<div><button class="mapBtn" onclick="startDivision()">开始切割</button></div>
<div><button class="mapBtn" onclick="stopDivision()">停止切割</button></div>
<div>矩形的四个点:<br>
左上角:<input type="text" id="leftUp"/>
右上角:<input type="text" id="rightUp"/><br>
左下角:<input type="text" id="leftDown"/>
右下角:<input type="text" id="rightDown"/><br>
上边距离:<input type="text" id="upDistance"/><br>
下边距离:<input type="text" id="downDistance"/><br>
左边距离:<input type="text" id="leftDistance"/><br>
右边距离:<input type="text" id="rightDistance"/><br>
横向网格数:<input type="text" id="right"/><br>
纵向网格数:<input type="text" id="left"/>
<button>生成地图区域</button>
</div>
</div>
<div class="clear"></div>
<script type="text/javascript">
var map = new BMap.Map("container");
//var point = new BMap.Point(120.159636,30.272592);
//map.centerAndZoom(point,16);
map.centerAndZoom("杭州", 11);
map.enableScrollWheelZoom();
map.enableContinuousZoom();
map.enableInertialDragging();
var pt1 = new BMap.Point(0,0);
var pt2 = new BMap.Point(0,0);
var pt3 = new BMap.Point(0,0);
var pt4 = new BMap.Point(0,0);
//var isTopLeft=false,isRightBottom=false;
var isMouseDown=false;
var defalutCursor;
var isDivision=false;
// 返回IE版本号
var ieVersion = 0;
if (/msie (\d+\.\d)/i.test(navigator.userAgent)) {
ieVersion = document.documentMode || + RegExp['\x241']
}
// var leftUp;
// var rightUp;
// var leftDown;
// var rightDown;
map.addEventListener("mousedown", function(e){
if(!isDivision){return;}
// 由于在IE和非IE浏览器下,e对象对鼠标按下键的返回值不一样
// 所以需要分两种情况判断,当不是鼠标左键时,返回无操作
var e1 = window.event || e;
if (e1.button != 0 && !ieVersion || ieVersion && e1.button != 1){
return;
}
pt1.lng = e.point.lng;
pt1.lat = e.point.lat;
isMouseDown = true;
document.getElementById('leftUp').value = pt1.lng+','+pt1.lat;
var rect = new BMap.Polygon([pt1]);
rect.setPositionAt(0,pt1);
return leftUp;
});
map.addEventListener("mousemove", function(e){
if(!isMouseDown || !isDivision){return;}
pt2.lng = e.point.lng;
pt2.lat = pt1.lat;
pt3.lng = e.point.lng;
pt3.lat = e.point.lat;
pt4.lng = pt1.lng;
pt4.lat = e.point.lat;
map.clearOverlays();
var rect = new BMap.Polygon([pt1,pt2,pt3,pt4]);
rect.setStrokeWeight(2);
rect.setStrokeOpacity(0.8);
rect.setStrokeColor("red");
rect.setFillColor("white");
rect.setFillOpacity(0.5); map.addOverlay(rect);
document.getElementById('rightUp').value = pt3.lng+','+pt3.lat;
document.getElementById('leftDown').value = pt4.lng+','+pt4.lat;
document.getElementById('rightDown').value = pt2.lng+','+pt2.lat;
var leftUp = new BMap.Point(pt1.lng, pt1.lat);
var rightUp = new BMap.Point(pt3.lng,pt3.lat);
var leftDown = new BMap.Point(pt4.lng, pt4.lat);
var rightDown = new BMap.Point(pt2.lng,pt2.lat);
//获得矩形四边的距离
var upDistance = map.getDistance(leftUp,rightUp);
var downDistance = map.getDistance(leftDown,rightDown);
var leftDistance = map.getDistance(leftUp,leftDown);
var rightDistance = map.getDistance(rightUp,rightDown);
document.getElementById('upDistance').value = upDistance;
document.getElementById('downDistance').value = downDistance;
document.getElementById('leftDistance').value = leftDistance;
document.getElementById('rightDistance').value = rightDistance;
//document.write(rightDistanc);
});
var demo = document.getElementById("container");
demo.onmouseup = function(e){
isMouseDown = false;
}
// var rightDistance = map.getDistance(rightUp,rightDown);
// document.getElementById('rightDistance').value = rightDistance;
function startDivision(){
defalutCursor = map.getDefaultCursor();
map.setDefaultCursor("crosshair");
map.disableDragging();
isDivision = true;
}
function stopDivision(){
map.setDefaultCursor(defalutCursor);
map.enableDragging();
isDivision = false;
}
</script>
</body>
</html>