前段时间做的地图拉框查询,仅供参考
/*在地图上拖动鼠标画矩形方法
* drawRectangleCallBack 为画矩形结束时回调函数
* */
XMap.prototype.drawRectangle = function (drawRectangleCallBack){
//取消拉框放大缩小事件
this.cancelZoomExtEvent();
if(this.getDrawObject()&&this.getDrawObject()['object']){
this.getDrawObject()['object'].setMap(null);
delete this.getDrawObject()['object'];
}
var xMap = this;
var rectangle = null;
xMap.map.draggable = false;
var mapMouseDownEvent = google.maps.event.addListener(xMap.map, 'mousedown', function(event) {
var centerPoint = event.latLng;
var latLngBounds = new google.maps.LatLngBounds(centerPoint,centerPoint);
rectangle= new google.maps.Rectangle({
bounds:latLngBounds,
fillColor: "#FF0000",
fillOpacity: 0.35,
strokeColor:'#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
draggable: true,
map:xMap.map});
var mapMouseMoveEvent = google.maps.event.addListener(xMap.map, 'mousemove', function(event1) {
var latLngBoundsTemp = new google.maps.LatLngBounds(centerPoint,event1.latLng);
rectangle.setBounds(latLngBoundsTemp);
});
var circleMouseMoveEvent = google.maps.event.addListener(rectangle, 'mousemove', function(event) {
var latLngBoundsTemp = new google.maps.LatLngBounds(centerPoint,event.latLng);
rectangle.setBounds(latLngBoundsTemp);
});
var mapMouseUpEvent = google.maps.event.addListener(xMap.map, 'mouseup', function(event) {
if(mapMouseDownEvent){
google.maps.event.removeListener(mapMouseDownEvent);
}
if(mapMouseMoveEvent){
google.maps.event.removeListener(mapMouseMoveEvent);
}
if(circleMouseMoveEvent){
google.maps.event.removeListener(circleMouseMoveEvent);
}
if(mapMouseUpEvent){
google.maps.event.removeListener(mapMouseUpEvent);
}
if(rectangleMouseUpEvent){
google.maps.event.removeListener(rectangleMouseUpEvent);
}
//确保地图mouseup 和对象mouseup 只执行一次
if(!xMap.map.draggable){
xMap.map.draggable = true;
xMap.getDrawObject()['object'] = rectangle;
if(drawRectangleCallBack){
drawRectangleCallBack();
}else{
alert('回调函数为空,请传入回调函数');
}
}
});
var rectangleMouseUpEvent = google.maps.event.addListener(rectangle, 'mouseup', function(event) {
if(mapMouseDownEvent){
google.maps.event.removeListener(mapMouseDownEvent);
}
if(mapMouseMoveEvent){
google.maps.event.removeListener(mapMouseMoveEvent);
}
if(circleMouseMoveEvent){
google.maps.event.removeListener(circleMouseMoveEvent);
}
if(mapMouseUpEvent){
google.maps.event.removeListener(mapMouseUpEvent);
}
if(rectangleMouseUpEvent){
google.maps.event.removeListener(rectangleMouseUpEvent);
}
//确保地图mouseup 和对象mouseup 只执行一次
if(!xMap.map.draggable){
xMap.map.draggable = true;
xMap.getDrawObject()['object'] = rectangle;
if(drawRectangleCallBack){
drawRectangleCallBack();
}else{
alert('回调函数为空,请传入回调函数');
}
}
});
});
}
解决方案 »
- JavaScript 浮动定位提示效果
- 针对javascript处理二进制流,遇到乱码charCodeAt会将其转为65533,怎么破
- 为什么这段切换图片的代码在IE下能起作用,而在Firefox下却不起作用???
- 为什么我的电脑识别不了javascript语句里的代码
- JQuery easyui tabs.有个的需求,求帮助!!!
- 为什么再我没有点图片PLAY按钮的时候,图片自动跳转啊?刚刚开始做WEB程序,希望高手指教!
- 请问如何在用window.createPopup()创建的窗体中打开链接?
- 怎样用JS实现IE中"后退"按钮一直是灰色的?急!高分相送
- netscape下如何弹出模态对话框
- 超困惑问题,怎样调用"目标另存为",高分求解!!!
- 问下怎么判断是否选中复选框
- 求个正则表达式
别人强调要用V3版的,能合适吗?还有需要应用JS文件吗?我是直接一句代码
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>电子围栏</title>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function iniz(){
var myLatlng=new google.maps.LatLng(22.688815,114.2764789);
var myOptions={
zoom:12,
center:myLatlng,
mapTypeId:google.maps.MapTypeId.ROADMAP
}
var map= new google.maps.Map(document.getElementById("map_canvas"),myOptions);
//设置了标志
var er = new google.maps.Marker({
position:myLatlng,
map:map,
title:"hello,world"
});
//多边形
var rectangle=new google.maps.Rectangle();
var rectOptions={
strokeColor:"#ff0000",
strokeOpacity:0.8,
strokeWeight:2,
fillColor:"#ff0000",
fillOpacity:0.35,
map:map,
clickable:false,
bounds:map.getBounds()
};
var beginlatlng="";//记录起初点坐标
var endlatlng=""//记录结束点坐标<br />
var rectBounds="";
var SfClick="";
var SfMove="";
var ClickCount=0;//点击次数
SfClick=google.maps.event.addListener(map,'click',function(e){
var begin=e.latLng;
ClickCount++;
if(ClickCount==1){
SfMove=google.maps.event.addListener(map,"mousemove",function(e){
beginlatlng=begin;
endlatlng=e.latLng;
rectOptions.bounds = new google.maps.LatLngBounds(beginlatlng,endlatlng);
rectOptions.map=map;
rectangle.setOptions(rectOptions);
});
}else{
google.maps.event.removeListener(SfMove);
if(window.confirm("确定该电子围栏范围?")){
ClickCount=0;
alert('起初坐标点'+beginlatlng+'\n介绍坐标点'+endlatlng);
}else{
ClickCount=0;
rectOptions.map=null;
rectangle.setOptions(rectOptions);
}
}
});
}
</script>
</head><body onload="iniz()">
<div id="map_canvas" style="width:800px;height:600px"></div>
</body>
</html>