GoogleMapsV3-----基础地图(鼠标移动画矩形)

<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> 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值