zoukankan      html  css  js  c++  java
  • 基于百度地图的 JavaScript API示例学习

    基于百度地图的 JS API 示例学习

    最近在做和地图相关的项目,需要在 C# 编写的桌面应用中嵌入在线地图。我首先尝试了百度地图提供的 JavaScript API,大致了解它的实现过程,这是一个小的示例。

    首先要去百度开发者平台申请一个 Key,实际上根据我的个人体验,不用密钥也可以使用,只不过是 1.4 版。目前最新是 2.0。开始的创建地图都很简单,还可以添加标注点以及鼠标点击事件。

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
    body, html,#allmap { 100%;height: 100%;overflow: hidden;margin:0;}
    #l-map{height:100%;78%;float:left;border-right:2px solid #bcbcbc;}
    #r-result{height:100%;20%;float:left;}
    </style>
    <!-- 百度地图v1.4可不用密钥 src="http://api.map.baidu.com/api?v=1.4"-->
    <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你自己的密钥"></script> 
    <title>百度地图的Hello, World</title>
    </head>
    <body>
    <div id="allmap"></div>
    </body>
    </html>
    <script type="text/javascript">
    var map = new BMap.Map("allmap");            // 创建Map实例
    var point = new BMap.Point(108.771672, 34.039175);    // 创建点坐标
    map.centerAndZoom(point,18);                     // 初始化地图,设置中心点坐标和地图级别。
    map.enableScrollWheelZoom();                            //启用滚轮放大缩小
    
    
    var marker1 = new BMap.Marker(new BMap.Point(108.771672, 34.039175));  // 创建标注
    map.addOverlay(marker1);              // 将标注添加到地图中
    marker1.setAnimation(BMAP_ANIMATION_BOUNCE); //跳动的动画
    var infoWindow1 = new BMap.InfoWindow("协同感知中心地点");              //给标注添加信息框
    //给mark添加鼠标单击事件
    marker1.addEventListener("click", function () { this.openInfoWindow(infoWindow1); });
    
    //编写自定义函数添加工作者标注
    function addMarker(point, i) {
        //百度默认的标注是个红色气球,可以给它换图标:
        var myIcon = new BMap.Icon("./red_dot.png", new BMap.Size(20, 20), { anchor: new BMap.Size(10, 10) });//自己要添加的路径
        var marker2 = new BMap.Marker(point, { icon: myIcon });  // 创建标注
        map.addOverlay(marker2);              // 将标注添加到地图中
    
        //最后为信息框加入点击鼠标事件:
        var infoWindow2 = new BMap.InfoWindow("<p style='font-size:12px;'>工作者"+ i +"</p>");
        marker2.addEventListener("click", function () { this.openInfoWindow(infoWindow2); });
    }
    
    // 随机向地图添加25个标注
    var bounds = map.getBounds();
    var sw = bounds.getSouthWest();
    var ne = bounds.getNorthEast();
    var lngSpan = Math.abs(sw.lng - ne.lng);
    var latSpan = Math.abs(ne.lat - sw.lat);
    for (var i = 0; i < 15; i++) {
        var point = new BMap.Point(sw.lng + lngSpan * (Math.random() ), ne.lat - latSpan * (Math.random() ));
        addMarker(point, i);
    }
    
    </script>
    

    我遇到的一个小问题是,更换了标注点的图标之后,放大缩小地图会导致标记点漂移。查了官方类的说明,但是很简略。我多次测试之后才明白问题出现在这两个参数上:

    var myIcon = new BMap.Icon("./red_dot.png", new BMap.Size(20, 20), { anchor: new BMap.Size(10, 10) });
    

    这里 { anchor: new BMap.Size(10, 10) }可以调整设置到图标的中心,这样再去放大缩小地图就不会出现图标移位的状况。

  • 相关阅读:
    [Swift]LeetCode1099. 小于 K 的两数之和 | Two Sum Less Than K
    转 用好HugePage,告别Linux性能故障
    子shell
    转 【推荐】 RAC 性能优化全攻略与经典案例剖析
    转 shell模拟数据库的读写
    c 语言写的高级Oracle&#174;数据库调优及监控工具
    crontab 在unix 没有执行。
    Oracle 云计算
    aix 推荐使用重启
    linux 打开FTP 功能
  • 原文地址:https://www.cnblogs.com/JackKing-defier/p/7922369.html
Copyright © 2011-2022 走看看