<html>
<head>
<title></title>
<script language="javascript" type="text/javascript">
//【初始化地图】MapInitialize
//===================================================================================================
function MapInitialize() {
//构建经纬度点
var latlng = new google.maps.LatLng(30.277925, 120.177597);
var myOptions =
{
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.HYBRID,
//关闭 API 的默认用户界面设置
// disableDefaultUI: true,
mapTypeControl: false,
//标尺
scaleControl: true,
scaleControlOptions: {
position: google.maps.ControlPosition.RIGHT_BOTTOM
}
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); //实例化地图
//================================================================================================================
var dian1 = null;
var dian1lat = null;
var dian1lng = null;
var dian2 = null;
var dian2lat = null;
var dian2lng = null;
var bounds = null;
var juxing = null;
var tuodong = null;
var tuodong1 = null;
var clickEvent = null;
var huawanyidongdian1 = null;
var huawanyidongdian2 = null;
var huawanyidongchazhilat = null;
var huawanyidongchazhilng = null;
var huawanshubiaodianjishijian = null;
var huawanshubiaoyidongshijian = null;
// var huawanshubiaoyidongditushijian = null;
clickEvent = google.maps.event.addListener(map, 'click', function (event) {
if (dian1 == null) {
dian1 = event.latLng;
dian1lat = event.latLng.lat();
dian1lng = event.latLng.lng();
tuodong = google.maps.event.addListener(map, 'mousemove', function (event) {
dian2lat = event.latLng.lat();
dian2lng = event.latLng.lng();
if (dian1lat > dian2lat) {
dian2lat = dian2lat + 0.05;
} else {
dian2lat = dian2lat - 0.05;
}
if (dian1lng > dian2lng) {
dian2lng = dian2lng + 0.05;
} else {
dian2lng = dian2lng - 0.05;
}
if (juxing == null) {
dian2 = new google.maps.LatLng(dian2lat, dian2lng);
bounds = RectangularBoundsProcessing(dian1, dian2);
var newRectangularAttribute = {
strokeColor: "#6f77ff",
strokeOpacity: 0.5,
strokeWeight: 2,
fillColor: "#4a85ff",
fillOpacity: 0.3,
// editable: true,
map: map,
bounds: bounds
};
juxing = new google.maps.Rectangle(newRectangularAttribute);
} else {
if (dian2 != new google.maps.LatLng(dian2lat, dian2lng)) {
dian2 = new google.maps.LatLng(dian2lat, dian2lng);
bounds = RectangularBoundsProcessing(dian1, dian2);
juxing.setBounds(bounds);
tuodong1 = google.maps.event.addDomListener(juxing, 'mousemove', function (event) {
dian2lat = event.latLng.lat();
dian2lng = event.latLng.lng();
if (dian1lat > dian2lat) {
dian2lat = dian2lat + 0.05;
} else {
dian2lat = dian2lat - 0.05;
}
if (dian1lng > dian2lng) {
dian2lng = dian2lng + 0.05;
} else {
dian2lng = dian2lng - 0.05;
}
if (dian2 != new google.maps.LatLng(dian2lat, dian2lng)) {
dian2 = new google.maps.LatLng(dian2lat, dian2lng);
bounds = RectangularBoundsProcessing(dian1, dian2);
juxing.setBounds(bounds);
}
});
}
}
});
} else {
try {
juxing.setMap(null);
bounds = RectangularBoundsProcessing(dian1, dian2);
var newRectangularAttribute = {
strokeColor: "#6f77ff",
strokeOpacity: 0.5,
strokeWeight: 2,
fillColor: "#4a85ff",
fillOpacity: 0.3,
editable: true,
map: map,
bounds: bounds
};
juxing = new google.maps.Rectangle(newRectangularAttribute);
dian1 = null;
dian1lat = null;
dian1lng = null;
dian2 = null;
dian2lat = null;
dian2lng = null;
bounds = null;
google.maps.event.removeListener(clickEvent);
clickEvent = null;
google.maps.event.removeListener(tuodong);
tuodong = null;
google.maps.event.removeListener(tuodong1);
tuodong1 = null;
} catch (e) { }
huawanshubiaodianjishijian = google.maps.event.addDomListener(juxing, 'click', function (event) {
if (huawanyidongdian1 == null) {
huawanyidongdian1 = event.latLng;
huawanshubiaoyidongshijian = google.maps.event.addDomListener(juxing, 'mousemove', function (event) {
if ((huawanyidongdian1 != null)) {
huawanyidongdian2 = event.latLng;
huawanyidongchazhilat = huawanyidongdian2.lat() - huawanyidongdian1.lat();
huawanyidongchazhilng = huawanyidongdian2.lng() - huawanyidongdian1.lng();
juxing.setBounds(new google.maps.LatLngBounds(new google.maps.LatLng(juxing.getBounds().getSouthWest().lat() + huawanyidongchazhilat, juxing.getBounds().getSouthWest().lng() + huawanyidongchazhilng), new google.maps.LatLng(juxing.getBounds().getNorthEast().lat() + huawanyidongchazhilat, juxing.getBounds().getNorthEast().lng() + huawanyidongchazhilng)));
huawanyidongdian1 = huawanyidongdian2;
}
});
tuodong = google.maps.event.addListener(map, 'mousemove', function (event) {
if (huawanshubiaoyidongshijian != null && huawanyidongdian1 != null) {
huawanyidongdian2 = event.latLng;
huawanyidongchazhilat = huawanyidongdian2.lat() - huawanyidongdian1.lat();
huawanyidongchazhilng = huawanyidongdian2.lng() - huawanyidongdian1.lng();
juxing.setBounds(new google.maps.LatLngBounds(new google.maps.LatLng(juxing.getBounds().getSouthWest().lat() + huawanyidongchazhilat, juxing.getBounds().getSouthWest().lng() + huawanyidongchazhilng), new google.maps.LatLng(juxing.getBounds().getNorthEast().lat() + huawanyidongchazhilat, juxing.getBounds().getNorthEast().lng() + huawanyidongchazhilng)));
huawanyidongdian1 = huawanyidongdian2;
}
});
} else {
// google.maps.event.removeListener(huawanshubiaodianjishijian);
// huawanshubiaodianjishijian = null;
google.maps.event.removeListener(huawanshubiaoyidongshijian);
huawanshubiaoyidongshijian = null;
google.maps.event.removeListener(tuodong);
tuodong = null;
huawanyidongdian1 = null;
huawanyidongdian2 = null;
huawanyidongchazhilat = null;
huawanyidongchazhilng = null;
}
});
}
});
}
//【矩形Bounds处理】
//============================================================================================
function RectangularBoundsProcessing(coordinate1, coordinate2) {
if (coordinate1 != null && coordinate2 != null) {
var myNorthEast = null;
var mySouthWest = null;
var maxRectangularLat = coordinate1.lat();
var maxRectangularLng = coordinate1.lng();
var minRectangularLat = coordinate1.lat();
var minRectangularLng = coordinate1.lng();
if (coordinate2.lat() > maxRectangularLat) {
maxRectangularLat = coordinate2.lat();
}
if (coordinate2.lng() > maxRectangularLng) {
maxRectangularLng = coordinate2.lng();
}
if (coordinate2.lat() < minRectangularLat) {
minRectangularLat = coordinate2.lat();
}
if (coordinate2.lng() < minRectangularLng) {
minRectangularLng = coordinate2.lng();
}
myNorthEast = new google.maps.LatLng(maxRectangularLat, minRectangularLng);
mySouthWest = new google.maps.LatLng(minRectangularLat, maxRectangularLng);
var myBounds = new google.maps.LatLngBounds(myNorthEast, mySouthWest);
}
return myBounds;
}
//【程序完全加载页面后加载地图API】
//============================================================================================
function loadScript() {
var script = document.createElement("script");
script.type = "text/javascript";
//sensor=false定位功能为否,region=cn本地化语言中文,callback=initialize在API完全加载完成后再回调执行初始化函数。
script.src = "http://maps.google.com/maps/api/js?sensor=false&libraries=places&callback=MapInitialize";
document.body.appendChild(script);
}
window.onload = loadScript;
</script>
</head>
<body>
<div id="map_canvas" style="width: 100%; height: 100%;">
</div>
</body>
</html>