05 mapABC示例 leo

//非常全面的mapabcdemo,所有的都有          http://code.mapabc.com/class_javascript.html


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="dituABC.aspx.cs" Inherits="Test_dituABC" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="../js/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" 
    src="http://apis.mapabc.com/webapi/auth.json?t=javascriptmap&v=3.1.1&key=b0a7db0b3a30f944a21c3682064dc70ef5b738b062f6479a5eca39725798b1ee300b"></script>
</head>
<body>
    <input type="button" id="temp" disabled="disabled"/>
    <input type="button" id="cancelDra" onclick="cancelDraw()" value="清除区域" />
    <input type="button" id="startDra" onclick="startDraw();"  value="开始画区域" />
    <input type="button" id="btnGetAreaName" onclick="getAreaName();"  value="获取地图上的覆盖物名称" />
    <span style="color: #FF4500" id="spTip"></span>
    <a href="#this" onclick="stoplistener()">关闭监听</a> <a href="#this" onclick="startlistener()">重启监听</a> 
    <div id="map_canvas" style="width: 800px; height: 600px"></div>
    <script type="text/javascript">
        var mapABC;  //地图
        var markerABC; //点  
        var infoWindowABC = null;    //infoWindow
        var polyLineABC = null;
        var arrPolygonPoints = [];          //多边形点数组   
        var arrPolylinePoints = [];         //折线数组   
        var polygonABC = null;           //多边形
        var polylineABC = null;          //折线
        var listenerABC = null;
        var mouseToolABC;                //鼠标工具模式


        var startLng = 117.18993830481;
        var startLat = 34.257423330251;
        var offsetX = -70;
        var offsetY = -60;
        var defaultIconPath = "/images/defaut/veh_ya.png";
        var smallIconPath = "/images/gongzuo.png";

        $(function() {
            initializeMapABC();
            AddMarkPolylinePolygonInfowindow();     //加点 点监听弹出 infoWindow     02
            listenerABC = mapABC.bind(mapABC, "click", listenerEvent); //03 监听click事件(加点、加线)
            //startDraw();           //04  绘图按钮  与AddMarkPolylinePolygonInfowindow有冲突,不可以同时使用
        });

        //*******************   ********************
        //******************* 01 地图初始化  ********************
        function initializeMapABC() {
            var toolbar, overview, scale;
            var opt = {
                level: 13, //初始地图视野级别
                center: new MMap.LngLat(parseFloat(startLng), parseFloat(startLat)), //设置地图中心点
                doubleClickZoom: true, //双击放大地图
                //defaultTileLayer:,  //默认的底图图层  类型:MMap.TileLayer
                scrollwheel: true //鼠标滚轮缩放地图
            };
            mapABC = new MMap.Map("map_canvas", opt);
            mapABC.plugin(["MMap.ToolBar", "MMap.OverView", "MMap.Scale"], function() {
                toolbar = new MMap.ToolBar();
                toolbar.autoPosition = false; //加载工具条
                mapABC.addControl(toolbar);
                overview = new MMap.OverView(); //加载鹰眼
                mapABC.addControl(overview);
                scale = new MMap.Scale(); //加载比例尺
                mapABC.addControl(scale);
            });
        }

        //02    加点 点监听弹出 infoWindow 
        function AddMarkPolylinePolygonInfowindow() {
            //******************* 02 打点  ********************
            var markerOpt = {
                id: "m",
                position: new MMap.LngLat(parseFloat(startLng), parseFloat(startLat)), //
                icon: "/images/defaut/veh_ya.png"
            };
            markerABC = new MMap.Marker(markerOpt);
            mapABC.addOverlays(markerABC); //向地图添加覆盖物
            mapABC.setCenter(new MMap.LngLat(parseFloat(startLng), parseFloat(startLat))); //置地图中心点经纬度,使用该方法地图将重新加载,会调整视野级别

            //******************* 03 给点增加弹出框  bind  click事件,增加infoWindow.open方法  ********************
            var infoWidowOpt = {
                content: "MapABC API",
                offset: new MMap.Pixel(offsetX, offsetY)   //MMap.Pixel(x,y) x 横向像素 y 纵向像素
            };
            infoWindowABC = new MMap.InfoWindow(infoWidowOpt);
            mapABC.bind(markerABC, 'click', function (e) {
                infoWindowABC.open(mapABC, e.lnglat);
            });

            //******************* 04添加折线叠加层  ********************
            var arrPolyLinePath = new Array();  //经纬度坐标数组
            arrPolyLinePath.push(new MMap.LngLat(parseFloat(startLng), parseFloat(startLat)));
            arrPolyLinePath.push(new MMap.LngLat(parseFloat(startLng), parseFloat(startLat - 0.02)));
            arrPolyLinePath.push(new MMap.LngLat(parseFloat(startLng - 0.03), parseFloat(startLat - 0.02)));

            var polylineOpt = {
                id: "polyline001",
                strokeColor: "#FF0000",
                strokeOpacity: 1,
                strokeWeight: 5,
                strokeStyle: "dashed", //solid,表示实线  dashed,表示虚线
                path: arrPolyLinePath
            };
            polyLineABC = new MMap.Polyline(polylineOpt);
            mapABC.addOverlays(polyLineABC);   //mapABC.addOverlays("polyline001"); 
        }

        //03      监听click事件(加点、加线) 
        function listenerEvent(event) {
            showMarker(event.lnglat);
           // drawPolyline(event.lnglat);
            drawPolygon(event.lnglat);
        }

        //0301  显示标记
        function showMarker(location) {
            var clickedLocation = location;
            var mymarker = new MMap.Marker({
                position: clickedLocation,
                icon: smallIconPath
            });
            mapABC.addOverlays(mymarker);
        }

         //0302 显示折线
        function drawPolyline(location) {
            if (polylineABC != null) {
                mapABC.clearOverlaysByType("polyline");  //这回把AddMarkPolylinePolygonInfowindow中的polyline也删除了
            }
            arrPolylinePoints.push(location);
            polylineABC = new MMap.Polyline(
            { id: "polyline01"
            , path: arrPolylinePoints
            , strokeColor: "#F00"
            , strokeOpacity: 0.4
            , strokeWeight: 3
            , strokeStyle: "dashed"
            , strokeDasharray: [10, 5]
            });
            mapABC.addOverlays(polylineABC);
        }
        //0303显示多边形
        function drawPolygon(location) {
            if (polygonABC != null) {
                mapABC.clearOverlaysByType("polygon");
            }
            arrPolygonPoints.push(location);
            polygonABC = new MMap.Polygon({
                id: "polygon01",
                path: arrPolygonPoints,
                //map: mapABC,   //没有此属性
                strokeColor: '#ff0000',
                //fillColor: '#ff0000',
                strokeOpacity: 0.6,
                strokeWeight: 5
            });
            mapABC.addOverlays(polygonABC);

        }

     //05
        //删除监听程序
        function stoplistener() {
            //google.maps.event.removeListener(listenerGoogle);
             mapABC.unbind(mapABC,"click",listenerEvent);
        }
        //开始监听程序
        function startlistener() {
            listenerABC = mapABC.bind(mapABC, "click", listenerEvent);
        }

        //04   绘图事件
        //0401开始画区域
        function startDraw() {
            mapInit();                  //初始化绘图工具
            mouseToolABC.polygon();     //指定绘图工具模式(这样就可以绘图了'marker'、'polyline'、'circle'、'rule'。。。都可以)
            //有以上两步就可以绘图了,下面的可以不要
            stoplistener();  //删除监听程序,因为之前有监听click的程序,会与绘图工具同时调用click方法,冲掉绘图工具的方法
            mapABC.clearOverlays();
            $("#spTip").html("<image alt='' src='../../images/salearea.png' style='float:left;'/>鼠标按下拖动画圆,抬起结束");
            
        }
        //0402取消已画区域
        function cancelDraw() {
            $("#spTip").html("");
            mapABC.clearOverlays();
            mapABC.setDefaultCursor();
        }

        //0403取消已画区域 获取当前覆盖物的长度
        function getAreaName() {
            var tempLength = null;
            var curObjs = mapABC.getOverlaysByType("polygon");  //类型返回覆盖物对象
            if (curObjs == undefined) {
            } else {
                for (var i = 0;i < curObjs.length; i++) {
                    tempLength += curObjs[i].path.length + "__";
                }
                alert("all overlay length is " + tempLength); //路径长度
            }
        }
        //初始化鼠标工具
        function mapInit() {
            mapABC.plugin("MMap.MouseTool", function () {
                mouseToolABC = new MMap.MouseTool(mapABC); //构造鼠标工具实例  
            });
        } 
  

    </script>
</body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值