java开发 怎么把图层放到百度地图上
发布网友
发布时间:2022-04-22 10:32
我来回答
共1个回答
热心网友
时间:2023-10-10 21:01
如果要在百度地图上实现一张自己自定义的地图,就需要使用百度地图自定义图层接口。实现效果如下:
但是百度地图中关于自定义图层的介绍甚少,便以此博文以记录,方便同行了解和使用。
百度地图官方文档中,关于自定义图层的介绍是这样的:
=========华丽丽的分隔线===========
自定义图层
地图坐标系
在使用自定义图层前,您需要了解百度地图的地图坐标系,百度地图坐标系涉及:
经纬度球面坐标系统
墨卡托平面坐标系统
图块编号系统
经纬度是一种利用三维空间的球面来定义地球上的空间的球面坐标系,它能够标示地球上任何一个位置。通过伦敦格林尼治天文台原址的经线为0度经线,从0度经线向东、向西各分180度。赤道为0度纬线,赤道以北的纬线称为北纬、以南的称为南纬。在百度地图中,东经和北纬用正数表示,西经和南纬用负数表示。例如北京的位置大约是北纬39.9度,东经116.4度,那么用数值标示就是经度116.6,纬度39.9。
在百度地图中,习惯经度在前,纬度在后,例如:
var point = new BMap.Point(116.404, 39.915); // 创建点坐标,经度在前,纬度在后
由于百度地图是显示在平面上的,因此在地图内部系统中需要将球面坐标转换为平面坐标,这个转换过程称为投影。百度地图使用的是墨卡托投影。墨卡托平面坐标如下图所示,平面坐标与经纬度坐标系的原点是重合的。
百度地图在每一个级别将整个地图划分成若干个图块,通过编号系统将整个图块整合在一起以便显示完整的地图。当地图被拖动或者级别发生变化时,地图API将会根据平面坐标计算出当前视野内所需显示的图块的编号。百度地图图块编号规则如下图所示:
从平面坐标原点开始的右上方向的图块编号为0,0,以此类推。在最低的缩放级别(级别 1)中,整个地球由 4 张图块组成。随着级别的增长,地图所使用的图块个数也随之增多。
定义取图规则
通过TileLayer类开发者可以实现自定义图层。其中,TileLayer实例的getTilesUrl方法需要实现,用来告诉API取图规则。getTilesUrl方法的参数包括tileCoord和zoom,其中tileCoord为图块的编号信息,zoom为图块的级别,每当地图需要显示特定级别的特定位置的图块时就会自动调用此方法,并提供这两个参数。使用者需要告知API特定编号和级别所对应的图块的地址,这样API就能正常显示自定义的图层了。
添加和移除自定义图层
以下代码在每个图块的所有缩放级别上显示一个简单的透明叠加层,使用浮动红色小水滴表示图块的轮廓。
var map = new BMap.Map("l-map"); // 创建地图实例
var point = new BMap.Point(116.404, 39.915); // 创建点坐标
map.centerAndZoom(point,15); // 初始化地图,设置中心点坐标和地图级别
var tilelayer = new BMap.TileLayer(); // 创建地图层实例
tilelayer.getTilesUrl=function(){ // 设置图块路径
return "layer.gif";
};
map.addTileLayer(tilelayer); // 将图层添加到地图上
=========华丽丽的分隔线============
这里讲得让人一知半解,最主要的是,文档中并没有说明如何实现getTilesUrl方法,以及如何实现将一张自己的地图分隔成符合百度地图要求的图块。
现在记录一下我解决这个问题的过程。
首先,我先下载百度地图瓦格图片切图工具:https://github.com/jiazheng/BaiMapTileCutter
其次,找到自己的地图,导入其中进行切片,参考Sup_Heaven转的博文:http://blog.csdn.net/sup_heaven/article/details/8461586
最后将图片放入项目资源文件中,实现getTitlesUrl方法即可。
这里需要补充一下的同,Sup_Heaven转的博文中,并没有详细说明中心点和瓦格图片之间的关系,只告诉我们其然却不知其所以然。借助度娘了解。百度地图的所有瓦格图片都是256px*256px的正方形图片,其图片的位置由经纬度和放大倍数zoom决定,所以在使用工具TileCutter时,设置对的级别范围和中心点,否则会导致切出的图片与实际需要不符。如果大家在使用过程有疑问的,欢迎留言交流
引用百度地图可以嵌入图层吗?比如管道线路和道路那样显示
2015-04-19 百度地图api开发:怎么做到像百度地图那样可以自动根据ip判... 1 2015-08-17 如何利用百度地图制作出行路线图 37 2012-01-04 在一个百度地图如何做到先显示地级市然后随着鼠标在某个地方的放... 2 2013-04-01 你好我想问下,如果我想让百度地图上标注一些位置在地图本身的图...更多类似问题 ...
百度地图lbs 怎么通过java自定义麻点图
1、将麻点做在同一张图片上,然后利用自定义图层接口,将麻点图贴在地图底图上;2、然后利用热区接口,使鼠标放在热点上,有文字显示。3、可以自己加上信息窗口等覆盖物,让热区hotspot看起来像标注marker一样。
什么地图可以看到实景图像和人?
1、首先点击打开百度地图,在地图里点击右上角位置处的【图层】功能。2、打开了的图层界面后可在地图类型里看到【全景地图】,点击该类型地图。3、接着来会在全景地图上多了一个【✔】,此时就已经选择使用了全景地图。4、返回到地图界面,此时把地图移动到想看的街道上,此时在地图上会显示出...
百度地图怎么看实景
您好亲,进入界面,之后点击【图层】,点击进入【全景地图】,点击【照片】后,显示实时街景即可,具体步骤如下:点击【图层】进入百度地图,点击右上角的【图层】按键。点击【全景地图】点击地图操作菜单中【地图类型】中的【全景地图】。点击返回地图 返回地图页面,就可以看到地图上【摄像头标志和图片】。
开发时如何在地图上显示重点路段怎么设置
1、获取地图数据:需要获取相应的地图数据,如道路网络和地理信息。2、标记重点路段:通过地图服务提供商的API,使用标记或图层功能,将重点路段标记在地图上。3、管理数据和交互:将重点路段的相关数据存储在数据库或其他数据源中,并确保与地图交互的功能正常工作。4、添加交互和控制:为提供更好的用户...
如何快速在百度地图上标记多个地点?
1、点击图层右边的“+”「新建图层」按钮,新建一个图层,在弹出的对话框中选择「海量点图层」,如下图所示:2、在上一步新建的图层下,点击「添加数据」按钮,添加数据。在弹出的对话框里面选择要上传的数据。如果您以前上传过海量点图层数据,那么您可以点击选择框框里的“∇”按钮,选择已经...
现在的百度地图app怎么打开看不到收藏的地点?
看不到收藏的地点是因为关闭了显示收藏地点,我们把它设置为可见就行了,操作流程如下: 1、打开百度地图app,点击右上角的【图层】; 2、找到收藏点,点击一下会变亮,关闭就是图中所示的灰色; 3、返回地图的主页面查看,就会显示出收藏的地点了,如图,有个黄色的星星标志。 再来分享下如何收藏新地点和查看所有收藏的...
如何把地图集成到leaflet中?
第一种,把纠偏算法封装成一个接口,类似上面提到的百度、高德地图的坐标转换接口,在向地图加载数据前,先调用这个接口完成坐标的转换再添加到地图上。等于是把自己的数据偏移到互联网地图坐标上。这种是最常见的。第二种,百度、高德的地图都是瓦片地图,每一张瓦片在加载时都会去计算它的经纬度位置,...
在百度地图中怎么打开百度三维地图功能?
1. 进入百度地图应用。2. 在地图界面,找到并点击“图层”按钮。3. 在弹出的图层选择框中,找到“三维地图”选项,点击即可打开百度三维地图功能。以下是 在进入百度地图应用后,你会看到主界面展示出常规的二维地图。若想要切换到三维地图模式,首先要找到地图界面上的“图层”按钮。这个按钮通常在地图...
如何使用Android调用百度地图API
定位当前手机的位置,这个功能我们一般都可以用百度地图或者谷歌地图的api来实现,这些api代码要在百度或者谷歌的官网上下载,这里不再多说,本文以代码实例的方式展示如何使用百度地图的api,安卓开发者可以直接复制本文示例代码到项目中进行测试,本文仅仅是使用百度地图api的核心代码,如果要使用可能需要进行相关修改,具体参考...