⑴ 百度地图api java怎么用
一、申请密钥
1、先用eclipse创建一个android工程
2、在网络api官网上申请一个密钥,链接:http://lbsyun..com/apiconsole/key
bubuko.com,布布扣
二、工程配置
1、将mapapi_vX_X_X.jar拷贝到工程libs目录下,将libBaiMapSDK_vX_X_X.so拷贝到libs\armeabi
目录下,拷贝完成后,如下所示:
注:liblocSDK3.so和locSDK_3.1.jar为网络定位SDK所使用资源,开发者可根据实际需求自行添加。
bubuko.com,布布扣
2、右键工程属性,在Libraries中选择“Add External JARs”,选择mapapi_vX_X_X.jar,确定返回
配置好以上步骤,即可使用网络地图了
三、显示网络地图
1、在android配置清单文件中AndroidManifest.xml添加开发密钥和所需权限
<application> <meta-data android:name="com..lbsapi.API_KEY" android:value="开发者 key" /> </application>
所需权限
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
2、在xml布局中添加地图控件
<com..mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
?3、在应用程序创建时初始化,SDK引用的全局变量Context
注意:在SDK各功能组件使用之前都需要调用
SDKInitializer.initialize(getApplicationContext());,因此我们建议该方法放在Application的初始化方法中
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
SDKInitializer.initialize(getApplicationContext());
System.out.println("SDKInitializer一初始化");
}
}
设置自定义的application为默认应用
<application
android:name="com.bao.ah.MyApplication"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
//SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
}
}
4、网络地图应和Activity生命周期绑定
public class MainActivity extends Activity {
MapView mMapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
//SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
//获取地图控件引用
mMapView = (MapView) findViewById(R.id.bmapView);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
mMapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
mMapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
mMapView.onPause();
}
}
⑵ 我想用JAVA写一个地图的手机应用程序,可是具体地理位置怎么确定呀,自己写还是用什么
一般都用第三方提供的地图API接口,网络 谷歌等都提供相关的API看自己适合用哪个。
⑶ 电子地图API比较
声明不是原创的,我是专业做gis的,公司也曾考虑用api开发,不过因限制较多还是作罢。这个作者还是比较了解的
Google Maps API : Google Maps API 基于Google Maps,能够使用 JavaScript 将 Google Maps 嵌入网页中。API 提供了大量实用工具用以处理地图,并通过各种服务向地图添加内容,从而使用户能够在自己的网站上创建功能强大的地图应用程序。Google Maps API支持交通地图和卫星地图,有中文语言版本,其地标文件KML格式已经成为在线地图的标准格式,Google Earth和Google Maps都支持KML。目前在国际和国内应用都非常广泛,提到互联网地图的应用,基本上不能不提Google Maps API。
Microsoft Virtual Earth API : 基于Virtual Earth的API,英文版,其例子和显示效果非常丰富,预览效果后可以查看相关源代码,可惜目前不支持中国地图的开发。
Yahoo Maps API : 基于Yahoo Maps,和微软地图一样,也仅支持英文,不支持中国地图的开发。Yahoo地图提供基于Flash、Ajax和Map Image三种形式的开发接口,功能较为齐全,显示效果不错。
MapABC API : 基于MapABC的国内地图供应商,Google地图的中国数据就是使用MapABC的,但其API接口和Google的并不相同,其API的开放性和灵活性不如Google地图API。
MapBar API : 基于MapBar的国内地图供应商,其数据提供网络地图使用。
我要地图API : 基于51地图,我要地图的一个特色是提供地图数据下载,可以实现本地桌面地图,不过其地图数据容量有数百兆之大。
我们对市面上几款主流的地图API服务提供商:Google地图服务,MapABC地图服务,微软地图服务,以及其他地图服务进行技术调研,根据调研总结结果为我们选用更为符合需求的地图服务提供商提供参考。
1.调研内容计划
本次技术调研内容主要为:
1. 各类MAP-API使用方法。MAP-API针对系统的开发效率的调查,比如在使用的合理性,封装的
便利性几个方面。
2. 各类MAP-API的功能初步调研,各类MAP-API在免费版本中的功能限制调研,针对免费和收费
版本的异同,收费策略和价格
3. 针对每种MAP-API以免费版本的API完成一个简单的调用示例,也便于对每种API进行代码级别
的使用体验。
2.调研详细内容
2.1 GOOGLE MAP API 调研
2.1.1. 主要使用方法介绍和评估:
Google Map API的种类和应用场景:
A. Google JavaScript地图API : 内嵌Iframe展现形式,适用于一般的互联网应用系统,具有
标准主流浏览器装载的客户端系统。支持的浏览器类型:ie,firefox,safari,google chrome。使用
标准的Java脚本进行开发,可集成google地图空间,与标准google地图功能类似。
B. Google Maps API(Flash版):FLASH展现形式,使用flex继续开发,适用于标准浏览器装载
的客户端系统。‘
C. Google 静态地图API: 图片:图片展现形式,使用http接口进行图片地图的创建,所实现功
能较前两种少,但无需使用java脚本实现,适用于手机或定制化客户端系统的服务调用。静态地图和前
两种地图相比还有个遵从每位查看者每天的唯一(不同)图像请求不超过 1000 次的查询限制配额,也
就是说每个访问者每天可以查看1000个不同的地图图片,对于相同的图片没有限制,所以考虑到一般系
统的访问量,此配合即可满足大部分系统的要求。
评估:
Google提供的这三种API已经基本可以满足大部分的系统需求,在开发难度上除Flex还不是主流技
术,开发成本较高外,其他两种技术在使用上都使用标准的网页开发技术,接口难度系数不大,尤其是
在静态地图API中,还提供了专门为手机所使用的WAP的地图类型.
2.12. API主要特性列表以及版本功能限制:
Google Map API的主要特性列表:
A. 地址解析(从地址名称解析到具体经纬度)
B. 缩放级别的设置
C. 图像大小的设置
D. 标记添加
E. 地图路径显示
(以上为静态地图和动态地图共有,以下为动态地图独有)
F.事件监听(监听客户端浏览器事件,并在需要接受的事件总定义处理方法)
G.. 地图控件(包括加载标准地图控件以及创建自定义控件,比如可以自己加入标注的控件,切
换地图类型的控件,缩放地图的控件等等)
H. 街道全景对象
I. 与google earth集成
J. 交通功能(行车路线,出行模式,路线路段)
K.可与Google AJAX API 集成开发,提高开发效率
L. 支持HTTPS连接对API的访问(企业版专有)
2.1.3.收费策略和商业限制:
Google Maps Api分为两个版本,一个是免费版,一个是企业版。
免费版不对使用者进行收费,但是对使用场景有一定的商业限制:
A. 每天可发出的地址解析请求数有限制,遵从每位查看者每天的唯一(不同)图像请求不超过
1000 次的查询限制配额。
B. 服务必须让最后的使用者免费访问。所以部分商业用途是符合使用条款的,以下两种情况不能
使用免费版:(1)仅付费客户可以使用您的网站(2)仅可从您的公司或您的 Intranet 中访问您的网
站。 详见google api的使用条款
C. 不能更改或遮盖地图上的徽标或归属内容。
企业版除具有免费版的所有功能外,还会根据收费策略的不同,加强服务功能的提升并更改了一些
商业限条款。这些增强点为:
A. 支持强大的服务级别协议(SLA)
B. 客户服务支持
C. 增加了地址解析限制
D. 商业级应用限制的变更
E. 支持HTTPS连接对API进行访问,达到数据保密的目的。
2.1.4.技术支持:
免费版的技术支持包括google code的专业详细的开发文档和google 地图API论坛的支持。
企业版除上述支持外还有人工的客户服务支持。
2.1.5. Google MAP API 使用:
为了正常使用google API,在进行开发之前需要在其项目主页上
http://code.google.com/intl/zh-CN/apis/maps/ 下载API所需的密钥。
Google Code上有很多map api的示例,讲解的十分全面,这里就不多说了。
总结:Google api 优势: 充足的开发资源和文档资源,与google map平行的api功能,强大的自定义
组件和控件功能。在静态API中有针对mobile类型系统的地图类型,API操作简单高效,符合一般性系统
开发需求。
2.2 MAP ABC API 调研
2.2.1. 主要使用方法介绍和评估:
Map ABC API的种类和应用场景:
A. Ajax For Flash 地图API2&Ajax搜索API : MapABC只有一种API类型,就是基于java脚本技术的
内嵌Flash地图展现形式,适用于一般的互联网应用系统,具有标准主流浏览器装载的客户端系统。支
持的浏览器类型:因为官方未公布所支持的浏览器类型,所以本次调研测试了ie,firefox基本没有问
题,由于MAPABC使用的地图展现载体是flash,所以理论上所有支持flash格式和Javascript的浏览器都
可以使用。
B. MAP ABC 静态API:通过JAVA脚本进行静态地图的生成,主要应用场景在需要加快地图加载,
只是示意性进行地图展示的系统中调用。
C. MAP ABC 地图组件API:在原有API的基础上进行封装,简化了开发复杂度,提高了开发效率。
评估:
MAP ABC接口全部采用java脚本进行调用,脚本使用比较方便,但是生成的地图格式为flash格式
,暂不支持其他格式的地图。至少目前为止厂商在免费版本还未提供基于服务端接口的地图生成的API
,企业版是单独提供此类接口的。目前来看MAPABC API还是着重于地图WEB端的展示作用,从这点来看
,比Google的免费版弱一些。
2.2.2. API主要特性列表以及版本功能限制:
MAP ABC API的主要特性列表:
A. 缩放级别的设置
B. 图像大小的设置
C. 标记添加
D. 地图路径显示
F.事件监听(监听客户端浏览器事件,并在需要接受的事件总定义处理方法)
G.. 地图搜索功能(地点搜索,公交路线搜索,行车路线搜索)
H. 地图绘图工具集成
I. 地图控制面板
J. 静态地图生成功能
K. 地图组件封装
2.2.3.收费策略和商业限制:
MapABC Api分为两个版本,一个是公众版,一个是企业版。
免费版不对使用者进行收费,但是对使用场景有一定的商业限制:
A. 使用Map ABC API服务,网站系统所提供给用户的服务必须是开放给一般大众使用且免费的服务
详见map abc api的API使用条款。
B. 不能更改或遮盖地图上的徽标或归属内容。
企业版除具有公众版版的所有功能外,还会增加一些定制服务和技术支持服务。这些增强点为:
D. 专业开发团队的开发服务
E. 从前台界面到后台功能的定制开发
F. 有针对性的MapABC地图API开发培训
G. 快速响应的技术支持。
2.2.4.技术支持:
免费版的技术支持包括MAP ABC网站文档以及MAP ABC 地图API论坛的支持。
企业版除上述支持外还有人工的客户服务支持。
2.2.5 MAPABC API 的使用
为了正常使用MAPABC API,在进行开发之前需要在其项目主页上
http://code.mapabc.com/v1/signup.shtml 下载API所需的密钥。
示例程序可见其网站。
2.3 其他地图服务 API 调研总结
以上我们对国内国外两种主流的地图服务进行了技术调研,除此之外,市面上还有一些其他的地
图API,比如51ti,yahoo地图API,微软Virtual Earth API,MAPBAR 等。
51ditu和Mapbar同MapABC类似,都是国产地图服务,其特点同MapABC类似,主要是不支持静态地
图的服务端调用,全JAVAscript的调用方式,在WEB上调用方便,但接口灵活性差,并不合适WAP网站的
开发。
Yahoo 的地图接口功能与Google类似,接口类型相比google更为方便和灵活,但是目前雅虎地图
API服务还不支持中国地图,所以目前暂不考虑。如果以后开放了中国区地图,Yahoo API 也是值得考
虑的选择。目前Yahoo地图支持静态地图生成,同时每日的同一ip的访问限制为50000次.
微软地图virtual map api功能较为全面,接口设计灵活性与可封装性也很好,同样支持静态地图服务
端生成,借助微软的MSDN社区的支持下,开发资源和文档也堪比Google Maps,但是由于此产品是微软
自有服务,保持微软一贯的风格,virtual map 官方称只支持ie6/ie7,另外在调用速度上个人感觉比
Google API 也略逊一筹。同时在本次调研时,微软的live.cn因为某些原因被GFW封掉了,因此同样影
响到了微软地图API服务ditu.live.com, 类似的事件希望以后还是少发生为妙。
部分资料来源于网络,仅供开发者参考!
⑷ java怎么调用百度地图api得到动态经纬度有demo最好,多谢
经纬度不是通过网络地图获得的,而是通过移动设备自身的GPS得到的
不过想要在GPS坐标在网络地图上显示出正确的地理位置,需要调用的火星坐标转换接口:
http://api.map..com/ag/coord/convert?from=0&to=4&x=121.44xxxx&y=31.22yyyy(xxxx、yyyy涉及隐私不能完全给出)。这个接口会返回转换后的火星坐标地址,BASE64编码的,可以进行解码。然后把火星坐标地址传到地图中就行了
⑸ java调用高德地图api返回中文乱码
自己写个工具类。调用一下就行了。程序运行的时候就是用的unicode码。只是我们看到的是被转义了而已
⑹ 如何使用java和百度地图api 得到两点之间的路程(
获取到两点的经纬度,再调用网络地图的api计算。我记得,有一个计算距离的api.
<script type="text/javascript">
// 网络地图API功能
var map = new BMap.Map("allmap");
map.centerAndZoom("重庆",12); //初始化地图,设置城市和地图级别。
var pointA = new BMap.Point(106.486654,29.490295); // 创建点坐标A--大渡口区
var pointB = new BMap.Point(106.581515,29.615467); // 创建点坐标B--江北区
alert('从大渡口区到江北区的距离是:'+(map.getDistance(pointA,pointB)).toFixed(2)+' 米。'); //获取两点距离,保留小数点后两位
var polyline = new BMap.Polyline([pointA,pointB], {strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5}); //定义折线
map.addOverlay(polyline); //添加折线到地图上
</script>
⑺ 怎样用java调用百度地图的JavaScript API
这种地图类的api都是基于前端的 简单的就是说 你在前端用javascript实例化一个地图 可以通过自定义服务器请求获取你需要的数据 然后把数据返回给api api就会自动帮你处理数据 产生新的视图
⑻ 怎么样使用java来获得百度地图开源接口中,IP定位返回的结果
gson,先按 那格式,定义一个类BaiGeo
Gson gson = new Gson();
result = gson.fromJson(sTotalString, BaiGeo.class);
⑼ 怎样在java中调用百度地图的API
网络地图Web服务API为开发者提供http接口,即开发者通过http形式发起检索请求,获取返回json或xml格式的检索数据。
api官网说明链接:
http://developer..com/map/webservice.htm
1、可用接口列举:
获取相关地址提示 place suggestion
http://api.map..com/place/v2/suggestion?query=水杉®ion=成都&output=json&ak=
2、获取坐标 geocoding
http://api.map..com/geocoder?address=锦江区菱安路299号&output=json&key=
http://api.map..com/place/v2/search?ak=&output=json&query=蓝光coco金沙&page_size=10&page_num=0&scope=1®ion=成都
{
"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、设施导航
http://api.map..com/place/v2/search?ak=&output=json&query=图书馆&page_size=20&page_num=0&scope=2®ion=成都
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 = "";
/**
* 返回输入地址的经纬度坐标 key lng(经度),lat(纬度)
*/
public static Map<String, 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("http://api.map..com/geocoder?address="
+ address + "&output=json&key=" + 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("")){
Map<String, String> map = null;
int lngStart = str.indexOf("lng\":");
int lngEnd = str.indexOf(",\"lat");
int latEnd = str.indexOf("},\"precise");
if (lngStart > 0 && lngEnd > 0 && latEnd > 0) {
String lng = str.substring(lngStart + 5, lngEnd);
String lat = str.substring(lngEnd + 7, latEnd);
map = new HashMap<String, String>();
map.put("lng", lng);
map.put("lat", lat);
return map;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String args[]) {
Map<String, String> map = LocationUtil.getLatitude("成都 高新西区西区大道1398号");
if (null != map) {
System.out.println(map.get("lng"));
System.out.println(map.get("lat"));
}
}
}
⑽ 求javaweb的调用百度地图api的项目 能实现基本功能
<html>
<head>
<!--引用网络地图-->
<script type="text/javascript" src="http://api.map..com/api?v=1.3">
</script>
<title>如何调用API</title>
<!-- 设计样式container容器:占50%大小-->
<style type="text/css">
#container{width:100%;height:100%;}
</style>
</head>
<body style="margin-top:0; margin-left:0">
<div id="container" style="margin-top:0; margin-left:0"></div>
<script type="text/javascript">
var map = new BMap.Map("container");//在container容器中创建一个地图,参数container为div的id属性;
map.addControl(new BMap.NavigationControl()); //初始化地图控件
map.addControl(new BMap.ScaleControl());
map.addControl(new BMap.OverviewMapControl());
var point = new BMap.Point(114.704605,38.282669);//定位,实际应用时,这个应该设置到参数中
map.centerAndZoom(point,20); //将point移到浏览器中心,并且地图大小调整为20街道级;
//其他坐标点
var points=new Array();
points.push(new BMap.Point(114.705027, 38.284326));//实际应用时,从数据库获取
points.push(new BMap.Point(114.701187, 38.284475));
points.push(new BMap.Point(114.700315, 38.285264));
points.push(new BMap.Point(114.706064, 38.284457));
points.push(new BMap.Point(114.706136, 38.284173));
var deps=["特种车辆","特种车辆","特种车辆","特种车辆","特种车辆","特种车辆"];
var personName=["王鹏","李大力","胡皓东","陈谦","大山","匿名用户"];
//alert(deps[0]+"/"+personName[0]);
for(var i=0;i<points.length;i++){
addMarker(i);
/*marker = new BMap.Marker(points[i]);
map.addOverlay(marker);
marker.addEventListener("click",function(){
//创建信息窗口
var opts = {
width : 30, // 信息窗口宽度
height: 30, // 信息窗口高度
title : deps[i] // 信息窗口标题
}
var infoWindow = new BMap.InfoWindow(personName[i], opts); // 创建信息窗口对象
map.openInfoWindow(infoWindow, map.getCenter()); // 打开信息窗口
});*/
}
function addMarker(j){
marker = new BMap.Marker(points[j]); // 创建标注
map.addOverlay(marker);
var opts = {
width : 10, // 信息窗口宽度
height: 10, // 信息窗口高度
title : deps[j] // 信息窗口标题
}
var infoWindow = new BMap.InfoWindow(personName[j], opts); // 创建信息窗口对象
marker.addEventListener("click", function(){ this.openInfoWindow(infoWindow); });
//marker.setLabel(new BMap.Label("我是网络,呵呵",{offset:new BMap.Size(10,-40)}));
}
//标注
/*var marker = new BMap.Marker(point);
map.addOverlay(marker);
marker.addEventListener("click",function(){ //点击标注时出发事件
alert("您点击了标注");
});
marker.enableDragging(); //标注可拖拽
//创建信息窗口
var opts = {
width : 30, // 信息窗口宽度
height: 30, // 信息窗口高度
title : "Hello" // 信息窗口标题
}
var infoWindow = new BMap.InfoWindow("World", opts); // 创建信息窗口对象
map.openInfoWindow(infoWindow, map.getCenter()); // 打开信息窗口
//折线
var polyline = new BMap.Polyline([
new BMap.Point(114.705027, 38.284326),
new BMap.Point(114.701187, 38.284475),
new BMap.Point(114.700315, 38.285264)
],
{strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5} //蓝色、宽度为6
);
map.addOverlay(polyline); */
</script>
</body>
</html>