zoukankan      html  css  js  c++  java
  • 百度地图自定义地图切片问题

        转载请注明出处!

         我们自己制作的小区域专题地图有时候需要发布在百度地图上,并覆盖原有的百度地图,例如,景区的专题地图,由于百度地图提供的界面较为单一,无法提供景区游览的功能,一些景区就自己制作景区地图,然后加载在百度地图上。

          那么我们怎么将一张png图片(为什么是png图片呢,因为png图片能够使底图透明)放在百度地图上呢,百度lbs api是有提供接口和案例的,http://lbsyun.baidu.com/jsdemo.htm#g0_2这是百度的官方示例。地图从png图片到切片,到放置在百度地图上需要用到以下几个步骤:

    1.找到百度地图切图工具

    切图工具五花八门,我用的是下面这个,觉得还不错,这里有下载地址:http://pan.baidu.com/s/1hr8VnIO

    2.切图工具使用

    选择exe文件打开,浏览需要选择的地图文件,

     选择输出目录

     

    上面的经纬度只能通过不断尝试,与百度地图进行比对来获得。

    下面是我比对的方法,选一个参考点,放在屏幕的一个部分,再打开百度地图官网,把这个参考点移动到屏幕的同一个地方,再对切图的部分进行比对,如有偏移,则回到上图进行坐标修改(办法虽然笨,但是很实用):

     

     这个是我的输出结果,没错,只有文件夹,和一个index.html文件

     

     点开看是这样的

    不用但新,接下来我给大家这个源代码,将这个源代码全部替换index.html文件就可以了。

    <!DOCTYPE html>
    <html>
    <head>
    <title>自定义地图类型</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style>
    html,body,#div_gis { 100%;height: 100%; overflow:hidden; font-size:12px; margin:0;font-family:'微软雅黑';}
    .BMap_cpyCtrl{display:none; }
    .anchorBL{display:none; }
    </style>
    <script type='text/javascript' src='http://api.map.baidu.com/api?v=2.0&ak=rHD1kYHbbvG2Wx4VnlEqEUZX'></script>
    </head>
    <body><div id='div_gis' ></div></body></html>
    <script type='text/javascript'>
    var map = new BMap.Map('div_gis',{minZoom:4,maxZoom:18});
    map.enableContinuousZoom();
    map.enableScrollWheelZoom(true);
    map.enableScrollWheelZoom();
    var point = new BMap.Point(109.773467, 18.316314);
    map.centerAndZoom(point, 13);
    map.addEventListener("click", function(e){
    alert(e.point.lng + ", " + e.point.lat);
    });

    var tileLayer = new BMap.TileLayer({isTransparentPng: true});
    tileLayer.getTilesUrl = function(tileCoord, zoom) {
    var x = tileCoord.x;
    var y = tileCoord.y;
    return 'tiles/' + zoom + '/tile' + x + '_' + y + '.png';
    }
    map.addTileLayer(tileLayer);

    </script>

     预览效果是这样的

     以上就是我的切图过程。

           重要提示:但是切图还需注意图片大小的情况,如果像素大小不控制,则会遇到切除来的图比百度地图上的大一圈或者小一圈的情况,具体参考以下数据:

        zoom(min)=15

        zoom(max)=18

        18级的源图片边长计算公式,为:256*2的[zoom(max)-zoom(min)]次方=2048

        256*2^(18-15)=2048

        用这个图,可以保证15、16、17、18四个级别的图像不会发生错位。

        如果想显示5个级别,如14到18级,那么根据上面的公式,原图片的边长应该为4096。

  • 相关阅读:
    英特尔“硬盘内存一体化”首款产品正式发布,读写速度超千倍,存储密度扩充十倍
    程序员,你为什么值这么多钱?
    不懂程序看的明白《黑客帝国》吗?
    程序员的工作、学习与绩效
    架构设计师能力模型
    .net平台的MongoDB使用
    转载-30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)
    XAF-DevExpress.ExpressApp.DC.Xpo.XpoTypeInfoSource 生成实体的过程-学习笔记
    谈谈敏捷开发
    XAF-由于try catch导致的性能问题一例
  • 原文地址:https://www.cnblogs.com/milkytea/p/6723928.html
Copyright © 2011-2022 走看看