java开发 怎么把图层放到百度地图上如果要在百度地图上实现一张自己自定义的地图,就需要使用百度地图自定义图层接口 。实现效果如下:
但是百度地图中关于自定义图层的介绍甚少 , 便以此博文以记录,方便同行了解和使用 。
百度地图官方文档中,关于自定义图层的介绍是这样的:
=========华丽丽的分隔线===========
自定义图层
地图坐标系
在使用自定义图层前 , 您需要了解百度地图的地图坐标系,百度地图坐标系涉及:
? 经纬度球面坐标系统
? 墨卡托平面坐标系统
? 图块编号系统
经纬度是一种利用三维空间的球面来定义地球上的空间的球面坐标系,它能够标示地球上任何一个位置 。通过伦敦格林尼治天文台原址的经线为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方法,以及如何实现将一张自己的地图分隔成符合百度地图要求的图块 。
现在记录一下我解决这个问题的过程 。
首先,我先下载百度地图瓦格图片切图工具:
其次,找到自己的地图,导入其中进行切片,参考Sup_Heaven转的博文:
最后将图片放入项目资源文件中,实现getTitlesUrl方法即可 。
这里需要补充一下的同,Sup_Heaven转的博文中,并没有详细说明中心点和瓦格图片之间的关系,只告诉我们其然却不知其所以然 。借助度娘了解 。百度地图的所有瓦格图片都是256px*256px的正方形图片,其图片的位置由经纬度和放大倍数zoom决定 , 所以在使用工具TileCutter时,设置对的级别范围和中心点,否则会导致切出的图片与实际需要不符 。如果大家在使用过程有疑问的,欢迎留言交流
如何使用java 开发百度地图百度有提供api的,一般是按照api给的网址,在网址后加经纬度或者地区名,但是百度地图要申请秘钥的,这个需要自己去申请一个,免费的,类似的功能你可以参考下面的源码虽然是javascript的,但是java用起来差不多,毕竟你的地图肯定是在web页面显示的
!DOCTYPE html
html
head
meta name="viewport" content="initial-scale=1.0, user-scalable=no" /
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
titleHello, World/title
style type="text/css"
html{height:100%}
body{height:100%;margin:0px;padding:0px}
#container{height:100%}
/style
script type="text/javascript" src="https://www.04ip.com/post/;ak=您的密钥"
//v2.0版本的引用方式:src="https://www.04ip.com/post/;ak=您的密钥"
//v1.4版本及以前版本的引用方式:src="https://www.04ip.com/post/;key=您的密钥callback=initialize"
/script
/head
body
div id="container"/div
script type="text/javascript"
var map = new BMap.Map("container");// 创建地图实例
var point = new BMap.Point(116.404, 39.915);// 创建点坐标
map.centerAndZoom(point, 15);// 初始化地图,设置中心点坐标和地图级别
/script
/body
/html
Android在使用百度地图api定位时,有人遇到过这种只有定位点,没有地图的情况么?下面附上java的代码 。应该是网络问题java百度地图代码,如果你用的是wifi,可以换成 4G试试 。好像原来有遇到过java百度地图代码;
求救!我生成了百度地图代码,然后把这个代码直接复制到index.jsp中吗?请问不用java百度地图代码了java百度地图代码,生成java百度地图代码的代码如果是javascript代码java百度地图代码的话直接引入或者复制过来就可以java百度地图代码了 。。如果是java代码 。就必须要编译一下
java类方法中百度地图API百度地图Web服务API为开发者提供http接口,即开发者通过http形式发起检索请求,获取返回json或xml格式的检索数据 。
api官网说明链接:
1、可用接口列举:
获取相关地址提示 place suggestion
水杉region=成都output=jsonak=42b8ececa9cd6fe72ae4cddd77c0da5d
2、获取坐标geocoding
锦江区菱安路299号output=jsonkey=42b8ececa9cd6fe72ae4cddd77c0da5d
;output=jsonquery=蓝光coco金沙page_size=10page_num=0scope=1region=成都
{
"status":0,
"message":"ok",
"total":2,
"results":[
{
"name":"蓝光COCO金沙",
"location":{
"lat":30.687544,
"lng":103.996691
},
"address":"西三环外金沙西源大道(IT大道旁)",
"uid":"223992992c5ee7e0841541df"
},
{
"name":"蓝光COCO金沙2期",
"location":{
"lat":30.681123,
"lng":103.991123
},
"address":"青羊区金沙IT大道旁",
"uid":"b7bb5abb1cd4982213293580"
}
]
}
3、设施导航
;output=jsonquery=图书馆page_size=20page_num=0scope=2region=成都
4、java测试类:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
public class LocationUtil {
private static final String BAIDU_APP_KEY = "42b8ececa9cd6fe72ae4cddd77c0da5d";
/**
* 返回输入地址的经纬度坐标 key lng(经度),lat(纬度)
*/
public static MapString, String getLatitude(String address) {
try {
// 将地址转换成utf-8的16进制
address = URLEncoder.encode(address, "UTF-8");
// 如果有代理,要设置代理,没代理可注释
// System.setProperty("http.proxyHost","192.168.172.23");
// System.setProperty("http.proxyPort","3209");
URL resjson = new URL(""
address"output=jsonkey="BAIDU_APP_KEY);
BufferedReader in = new BufferedReader(new InputStreamReader(
resjson.openStream()));
String res;
StringBuilder sb = new StringBuilder("");
while ((res = in.readLine()) != null) {
sb.append(res.trim());
}
in.close();
String str = sb.toString();
System.out.println("return json:"str);
if(str!=null!str.equals("")){
MapString, String map = null;
int lngStart = str.indexOf("lng\":");
int lngEnd = str.indexOf(",\"lat");
int latEnd = str.indexOf("},\"precise");
if (lngStart0lngEnd0latEnd0) {
String lng = str.substring(lngStart5, lngEnd);
String lat = str.substring(lngEnd7, latEnd);
map = new HashMapString, String();
map.put("lng", lng);
map.put("lat", lat);
return map;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String args[]) {
MapString, String map = LocationUtil.getLatitude("成都 高新西区西区大道1398号");
if (null != map) {
System.out.println(map.get("lng"));
System.out.println(map.get("lat"));
}
}
}
【java百度地图代码 百度地图java开发工具包】关于java百度地图代码和百度地图java开发工具包的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 加装机械硬盘需要怎么启动,加装机械硬盘需要重新装系统吗
- ChatGPT谁创造的,chainplus创始人
- 机顶盒软件怎么移动到u盘,机顶盒软件传到u盘上
- 快手live直播总是闪退,快手直播为啥闪退
- insort函数c语言 c语言insert
- 新媒体大赛如何展示,新媒体大赛海报
- ios文本编辑软件可以查找,苹果手机自带的文本编辑
- 雪米直播录屏怎么录,雪米直播录屏怎么录视频
- java简易qq代码 java设计登录界面代码