zoukankan      html  css  js  c++  java
  • 百度地图API示例之小实践 添加代理商标注

     

    地图坐标无非是经度纬度。

    每个代理商都有他的经度纬度参数,就能够在地图上标注出来了。

    效果如下:

    功能包括

    标记代理商

    显示导航

    显示距离

    测量距离

    点击选中等

    其中测距用到的是自定义控件

    地图根据城市名称进行定位,省市联动可以获取城市名称。

    1.引入文件

    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=sSelQoVi2L3KofLo1HOobonW"></script>
    <script type="text/javascript" src="http://api.map.baidu.com/library/DistanceTool/1.2/src/DistanceTool_min.js"></script>

    2.创建地图,根据城市名称

    复制代码
    var map = new BMap.Map("maparea");
    if (district !== null) {
        var cityName = city + district;
        map.centerAndZoom(cityName, 11);
    } else {
        var cityName = province + city;
        map.centerAndZoom(cityName, 11);
    }
    复制代码

    3.添加导航

    复制代码
    function addControl(map) {
        var top_left_control = new BMap.ScaleControl({
            anchor: BMAP_ANCHOR_TOP_LEFT
        }); // 左上角,添加比例尺
        var top_left_navigation = new BMap.NavigationControl({
            // 靠左上角位置
            anchor: BMAP_ANCHOR_TOP_LEFT,
            // LARGE类型
            type: BMAP_NAVIGATION_CONTROL_LARGE
        });
        map.addControl(top_left_navigation);
        map.addControl(top_left_control);
    }
    复制代码

    4.逐个添加代理商标记

    复制代码
    $.each(json.data,
    function(index, con) {
        opt_str += "<option value=" + con.id + " map_lng=" + con.map_lng + " map_lat=" + con.map_lat + ">" + con.name + " 电话:" + con.tel + "</option>";
        var point = new BMap.Point(con.map_lng, con.map_lat);
        var name = con.name;
        var tel = con.tel;
        addMarker(map, point, name, tel);
    })
    复制代码
    复制代码
    function addMarker(map, point, name, tel) {
        var marker = new BMap.Marker(point);
        map.addOverlay(marker);
        var label = new BMap.Label("姓名:" + name + " 电话:" + tel, {
            offset: new BMap.Size(20, -10)
        });
        marker.setLabel(label);
        marker.setAnimation(BMAP_ANIMATION_BOUNCE);
        marker.addEventListener("click", attribute);
        //marker.addEventListener("mouseover",attribute); // 可以添加多种事件类型
    }
    复制代码

    5.为标记添加点击事件

    复制代码
    function attribute(e) {
        var p = e.target;
        var map_lng = p.getPosition().lng;
        var map_lat = p.getPosition().lat;
        //alert(map_lng+','+map_lat);
        $('#agent_id option[map_lng="' + map_lng + '"][map_lat="' + map_lat + '"]').attr('selected', 'selected');
    }
    复制代码

    6.添加自定义控件--测距

    复制代码
    // 定义一个控件类,即function
    function ZoomControl() { // 这是js类
        // 默认停靠位置和偏移量
        this.defaultAnchor = BMAP_ANCHOR_TOP_RIGHT;
        this.defaultOffset = new BMap.Size(10, 10);
    }
    
    // 通过JavaScript的prototype属性继承于BMap.Control
    ZoomControl.prototype = new BMap.Control();
    
    // 自定义控件必须实现自己的initialize方法,并且将控件的DOM元素返回
    // 在本方法中创建个div元素作为控件的容器,并将其添加到地图容器中
    ZoomControl.prototype.initialize = function(map) {
        // 创建一个DOM元素
        var div = document.createElement("div");
        // 添加文字说明
        div.appendChild(document.createTextNode("测距"));
        // 设置样式
        div.style.cursor = "pointer";
        div.style.border = "1px solid gray";
        div.style.backgroundColor = "white";
        // 绑定事件,点击一次放大两级
        div.onclick = function(e) {
            var myDis = new BMapLib.DistanceTool(map);
            myDis.open(); // 开启鼠标测距
        }
        // 添加DOM元素到地图中
        map.getContainer().appendChild(div);
        // 将DOM元素返回
        return div;
    }
    
    function measureDistance(map) {
        // 创建控件
        var myZoomCtrl = new ZoomControl();
        // 添加到地图当中
        map.addControl(myZoomCtrl);
    }
  • 相关阅读:
    QOMO Linux 4.0 正式版发布
    LinkChecker 8.1 发布,网页链接检查
    pgBadger 2.1 发布,PG 日志分析
    Aletheia 0.1.1 发布,HTTP 调试工具
    Teiid 8.2 Beta1 发布,数据虚拟化系统
    zLogFabric 2.2 发布,集中式日志存储系统
    开源电子工作套件 Arduino Start Kit 登场
    Piwik 1.9 发布,网站访问统计系统
    Ruby 1.9.3p286 发布,安全修复版本
    toBraille 1.1.2 发布,Java 盲文库
  • 原文地址:https://www.cnblogs.com/ldms/p/5842127.html
Copyright © 2011-2022 走看看