个人博客原文地址:http://www.jiazhengblog.com/blog/2011/10/08/422/

今天的文章主要介绍如何利用地图API实现自定义地图。

百度地图API目前默认支持两种地图类型(map type):普通图和三维图,它们分别通过常量BMAP_NORMAL_MAP和BMAP_PERSPECTIVE_MAP来表示,在1.2版本中这两个常量实际上是MapType对象的实例。当然开发者也可以自己实例化一个MapType从而实现一个自定义的地图。

切图工具的使用

我们先从切图工具的使用开始,接着再分析该工具产生的代码来详细了解自定义地图的方法。切图工具放在了github上,具体地址为:https://github.com/jiazheng/BaiduMapTileCutter,进入后请下载TileCutter.exe:

注意,该工具是基于.NET平台开发的,所以要求有.NET Framework 4 以上的版本。

启动这个exe后会出现这个界面:

首先我们要做的就是选择一张图片作为地图的底图(图片下载自这里):

点击下一步后需要设置输出的目录,这里我们直接选择桌面:

继续下一步,这里要设置输出类型,我们使用默认值,即图块和相关代码都由工具生成:

坐标设置我们使用默认值,即图片的中心点所在的位置。由于我们制作的是独立的地图类型,所以中心点设置为0, 0即可。

级别范围设置:我们使用自定义,将范围设置为5到10级,原图放置在第10级,这样5到9级工具就会自动缩小图片。建议原图所在级别与最大级别一致,否则高于原图所在级别的时候图片会发虚(因为工具会将图片进行放大处理)。

设置地图类型的名称:

一切就绪,最后可以确认所有的信息是否正确。然后就可以点击“开始切图”了。

完成了:

这时我们会发现桌面多了一个index.html和一个tiles文件夹。我们打开index.html会看到结果:

源代码解析

现在再来看看这个页面的代码部分:

<!DOCTYPE html><html><head><title>自定义地图类型</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><script type="text/javascript" src="http://api.map.baidu.com/api?v=1.2"></script></head><body><div id="map" style="width:800px;height:540px"></div><script type="text/javascript">var tileLayer =new BMap.TileLayer();tileLayer.getTilesUrl =function(tileCoord, zoom) {var x = tileCoord.x;var y = tileCoord.y;return'tiles/'+ zoom +'/tile'+ x +'_'+ y +'.png';}var MyMap =new BMap.MapType('MyMap', tileLayer, {minZoom: 5, maxZoom: 10});var map =new BMap.Map('map', {mapType: MyMap});map.addControl(new BMap.NavigationControl());map.centerAndZoom(new BMap.Point(0, 0), 10);</script></body></html>

代码先创建了一个TileLayer实例,它代表一个图层,接着实现getTilesUrl方法提供图片的路径。getTilesUrl方法由API在铺图的时候进行调用,调用时会提供图块编号和级别信息,开发者要做的就是根据图块编号和级别信息返回正确图片地址(有关坐标和图块编号的内容可以阅读此文)。

下面代码创建一个MapType实例,第一个参数为地图类型的名字,第二个参数为地图类型所对应的图层,这里我们直接传递之前创建的TileLayer实例,后面是一些可选的配置参数,这里指定了最小级别和最大级别。

后面的代码就很简单了,创建map实例,并通过配置参数指定地图类型为MyMap。

如果大家有月球或火星的图片,那么创建一个月球地图或者火星地图也就不是一件难事了。

转载于:https://www.cnblogs.com/jz1108/archive/2011/10/08/2202239.html

百度地图API详解之自定义地图类型相关推荐

  1. 百度地图api设置html5,百度地图API详解之自定义地图类型

    今天的文章主要介绍如何利用地图API实现自定义地图. 百度地图API目前默认支持两种地图类型(map type):普通图和三维图,它们分别通过常量BMAP_NORMAL_MAP和BMAP_PERSPE ...

  2. 百度地图API详解之公交导航

    原文地址:http://blog.csdn.net/sup_heaven/article/details/8461593 只是作为备忘!!! 一次调试百度地图多marker事件监听的问题,不知如何解决 ...

  3. android 百度地图驾车导航,百度地图API详解之驾车导航

    本文将向大家介绍如何使用百度地图API提供的驾车导航服务进行开发. 一个简单的示例 驾车导航服务根据传入的起点和终点信息给出从起点到终点的驾车路线,我们先从一个最简单的示例看起: var map = ...

  4. 百度地图API详解之地图标注

    本文将向大家介绍百度地图API的标注(Marker)的使用方法和一些实现细节. 标注概述 标注(Marker)是用来表示一个点位置的可见元素,每个标注自身都包含地理信息.比如你在西单商场位置添加了一个 ...

  5. 百度地图API详解之地图标注(一)

    本文将向大家介绍百度地图API的标注(Marker)的使用方法和一些实现细节. 标注概述 标注(Marker)是用来表示一个点位置的可见元素,每个标注自身都包含地理信息.比如你在西单商场位置添加了一个 ...

  6. 百度地图API详解之地图标注覆盖物

    本文将向大家介绍百度地图API的标注(Marker)的使用方法和一些实现细节. 标注概述 标注(Marker)是用来表示一个点位置的可见元素,每个标注自身都包含地理信息.比如你在西单商场位置添加了一个 ...

  7. 百度地图API详解之地图坐标系统

    博客原文地址:http://www.jiazhengblog.com/blog/2011/07/02/289/ 我们都知道地球是圆的,电脑显示器是平的,要想让位于球面的形状显示在平面的显示器上就必然需 ...

  8. html加载百度地图,百度地图API详解之地图API加载方式

    本文将向大家介绍百度地图API的两种不同加载方式:同步加载和异步加载. 同步加载 这是最常见的加载方式,开发者需要在页面的head标签内添加一个script标签,标签的src属性填写为地图API的地址 ...

  9. java 腾讯地图api,腾讯地图API详解

    最近项目中需要通过用户输入的地址来判断是否在选定的地址范围内,于是想到了使用百度地图的API来通过地址得到经纬度,不过看了半天发现百度的API太不好用了,于是又找了一下腾讯地图的API,功能都写的很清 ...

最新文章

  1. 零知识证明实践教程,第三部分
  2. [专题总结]AC自动机
  3. 好的英文视频照片网站
  4. PAT 1007 Maximum Subsequence Sum
  5. python保存变量_将python 中的变量保存到本地
  6. 264,avs中Skip宏块与Direct预测模式 ,对称模式的区别
  7. 互联网,可预见的未来
  8. Mycat高可用架构原理_Mycat集群搭建_HA高可用集群_高可用_单表存储千万级_海量存储_分表扩展---MyCat分布式数据库集群架构工作笔记0027
  9. 收下这10个终身学习资源号,Max你的工作效率
  10. css中1cm等于多少px,px和rem换算(1rem等于多少px)
  11. CDH集成ES MasterNotDiscoveredException问题解决
  12. 无人机学习笔记 8 雷达工作波段划分
  13. Android Studio中如何隐藏顶部状态栏和标题栏
  14. 关于H5中的Canvas API的探索
  15. 编写名为censor的函数,用来把字符串中出现的每一处字母“foo”替换成“xxx”。例如,字符串“food fool”会变为“xxxd xxxl”。再不失清晰性的前提下程序越短越好
  16. 4.6有一个函数。 写程序,输入x的值,输出相应的y值
  17. 虚拟机 服务器 断电,esxi服务器断电后虚拟机无法开启(如何使用esxi中的虚拟机)...
  18. 怎么在linux系统查看jdk版本,linux系统如何查看jdk版本
  19. [AFCTF2018]One Secret, Two encryption(考点:公钥解析,gcd())
  20. 2022年安全员-A证考试试题及答案

热门文章

  1. 结构体复数相乘c语言,复数乘法中的结构体赋值实现代码
  2. 软件测试学习心得-5
  3. 怎么提取音乐中的伴奏?分享一个超好用的方法
  4. 如何查找你的IP地址?通过IP地址能直接定位到你家!
  5. 并行数据转换为串行数据的转换器
  6. matplotlib高级篇——坐标轴设置(坐标轴居中、坐标轴箭头、刻度设置、标识设置)
  7. gvim常用命令行大全
  8. ViewData与ViewBag的区别是什么
  9. android时间24小时,安卓时间显示TextClock显示日期时间,24小时制和12小时制(自定义...
  10. React Native仿美团下拉菜单