zoukankan      html  css  js  c++  java
  • Google Maps V3 矩形电子围栏实现

        很多地图定位等需要有电子围栏功能,正巧最近在做某个定位项目也需要这个功能。google了一下没发现好用的代码只好写自己一个了。

     

         很简单,直接上代码

    <!DOCTYPE html> 
    <html> 
    <head> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps JavaScript API v3 Example: Marker Simple</title> 
    <link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" /> 
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
    <script type="text/javascript"> 
    function initialize() {
        
    var myLatlng = new google.maps.LatLng(29.678815121.426489);
        
    var myOptions = {
            zoom: 
    12,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

        
    var marker = 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 = ""//记录结束点坐标
        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="initialize()"> 
      
    <div id="map_canvas"></div> 
    </body> 

    </html>  

     http://www.cnblogs.com/relax/archive/2011/08/24/2151838.html  

     注意 Rectangle 的clickable一定要设置为falsh,否则矩形结束不了。如果您在转载的时候能带上出处最好


  • 相关阅读:
    《leetcode42接雨水》
    《84. 柱状图中最大的矩形》
    [bzoj1565][NOI2009]植物大战僵尸
    [bzoj1497][NOI2006]最大获利
    [洛谷P4092][HEOI2016/TJOI2016]树
    [洛谷P3760][TJOI2017]异或和
    [洛谷P3758][TJOI2017]可乐
    [洛谷P3761][TJOI2017]城市
    [Uva11134]Fabled Rooks
    又是一年叶落时
  • 原文地址:https://www.cnblogs.com/relax/p/2151838.html
Copyright © 2011-2022 走看看