- 浏览: 257284 次
- 性别:
- 来自: 长沙
文章分类
最新评论
-
aaddsfdsfsdfs:
var map = new AMap.Map('contain ...
【map】使用高德地图显示地图轨迹 -
di1984HIT:
xiang
【linux】使用bind进行DNS配置 -
di1984HIT:
分别算么??
【java】改写js百度地图测距方法 -
di1984HIT:
不错不错。。
【LBS】使用高德地图实现轨迹路线 -
di1984HIT:
不好用啊???
【map】使用高德地图显示地图轨迹
采用百度开放平台的api对自己位置的定位的好处有很多。
1,完全不需要你做任何事情。程序自动给调用。
2,稳定。流量少。之前做的有些程序是从网络上抓取自己的ip地址来进行定位。
而百度的这个,返回一些你位置的基本信息。
一下就是代码:
基础类,这个类保存个人位置信息。
第二个为百度返回json的解析类,将获得的信息解析到基础类中进行保存。
第三个为layout的main.xml
最后是activity。可以显示地图和定位的。
最后还有权限:
1,完全不需要你做任何事情。程序自动给调用。
2,稳定。流量少。之前做的有些程序是从网络上抓取自己的ip地址来进行定位。
而百度的这个,返回一些你位置的基本信息。
一下就是代码:
基础类,这个类保存个人位置信息。
package com.duduli.li; public class Addr { private String time; private String error; private String pointX; private String PointY; private String radius; private String addr; public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getPointX() { return pointX; } public void setPointX(String pointX) { this.pointX = pointX; } public String getPointY() { return PointY; } public void setPointY(String pointY) { PointY = pointY; } public String getError() { return error; } public void setError(String error) { this.error = error; } public String getRadius() { return radius; } public void setRadius(String radius) { this.radius = radius; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } }
第二个为百度返回json的解析类,将获得的信息解析到基础类中进行保存。
package com.duduli.li; import org.json.JSONException; import org.json.JSONObject; public class JsonParse { public Addr parseJson(String json) throws JSONException{ Addr addrMsg = new Addr(); JSONObject jo = new JSONObject(json); // 解析json中的result值 String result = jo.getString("result"); JSONObject resultJO = new JSONObject(result); String time = resultJO.getString("time"); String error = resultJO.getString("error"); addrMsg.setTime(time); addrMsg.setError(error); // 解析json中的content值 String content = jo.getString("content"); JSONObject contentJO = new JSONObject(content); String point = contentJO.getString("point"); // 解析json中point数据 JSONObject pointJO = new JSONObject(point); String x = pointJO.getString("x"); String y = pointJO.getString("y"); addrMsg.setPointX(x); addrMsg.setPointY(y); String radius = contentJO.getString("radius"); addrMsg.setRadius(radius); // 解析json中add数据 String addr = contentJO.getString("addr"); JSONObject addrJO = new JSONObject(addr); String detail = addrJO.getString("detail"); addrMsg.setAddr(detail); return addrMsg; } }
第三个为layout的main.xml
<com.baidu.mapapi.MapView android:id="@+id/bmapsView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" />
最后是activity。可以显示地图和定位的。
package com.duduli.li; import org.json.JSONException; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Point; import android.os.Bundle; import com.baidu.location.LocServiceMode; import com.baidu.location.LocationChangedListener; import com.baidu.location.LocationClient; import com.baidu.location.ReceiveListener; import com.baidu.mapapi.BMapManager; import com.baidu.mapapi.GeoPoint; import com.baidu.mapapi.MapActivity; import com.baidu.mapapi.MapController; import com.baidu.mapapi.MapView; import com.baidu.mapapi.Overlay; public class BaiduMapTestActivity extends MapActivity { private LocationClient lc ; private BMapManager mBMapMan; private MapView mMapView; private double x; private double y; // private GeoPoint gp; @Override protected void onCreate(Bundle arg0) { // TODO Auto-generated method stub super.onCreate(arg0); setContentView(R.layout.main); mBMapMan = new BMapManager(getApplication()); mBMapMan.init("279B8BABF0AA0A98B33A494C9E310BBB10137789", null); super.initMapActivity(mBMapMan); lc = new LocationClient(this); lc.setCoorType("gcj02"); lc.setServiceMode(LocServiceMode.Background); lc.addLocationChangedlistener(new MyLocationChangedListener()); lc.addRecerveListener(new MyReceiveListenner()); lc.start(); try { Thread.sleep(3000); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } lc.getLocation(); } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } public class MyLocationChangedListener implements LocationChangedListener { public void onLocationChanged() { //在此添加,位置改变触发的功能。 // tv.append(text) } } public class MyReceiveListenner implements ReceiveListener{ public void onReceive(String strData) { //在此处理 获取到的定位结果的json串。 try { JsonParse jp = new JsonParse(); Addr ad = jp.parseJson(strData); // x = getPoint(ad.getPointX());//114.105 // y = getPoint(ad.getPointY());//22.54 x = Double.valueOf(ad.getPointX()); y = Double.valueOf(ad.getPointY()); mMapView = (MapView) findViewById(R.id.bmapsView); mMapView.setBuiltInZoomControls(true); mMapView.getOverlays().add(new MyOverlay()); MapController mc = mMapView.getController(); GeoPoint gp = new GeoPoint((int)(y*1E6),(int)(x*1E6)); // GeoPoint gp = new GeoPoint((int)(22.54762429*1E6),(int)(114.1054699*1E6)); mc.setCenter(gp); mc.setZoom(12); mBMapMan.start(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* public int getPoint(String s){ String str = s.substring(0, s.indexOf("."))+s.substring(s.indexOf(".")+1, s.indexOf(".")+7); return Integer.valueOf(str); }*/ } public class MyOverlay extends Overlay { GeoPoint geoPoint = new GeoPoint((int)(y*1E6),(int)(x*1E6)); Paint paint = new Paint(); @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { Point point = mMapView.getProjection().toPixels(geoPoint, null); Bitmap bmp = BitmapFactory.decodeResource(getResources(),android.R.drawable.presence_online); canvas.drawBitmap(bmp,point.x, point.y,paint); canvas.drawText("你在这里", point.x, point.y, paint); } } }
最后还有权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
发表评论
-
【android】访问web service(大概功能版)
2012-10-30 08:36 1354增加功能: 1,用户点击次数过快。提示。 2,增加progre ... -
【android】web service访问
2012-10-26 10:20 1363android对web service的访问。使用ksoap2 ... -
【android】在2.3.3下面是用DDMS模拟位置会死机
2012-08-05 15:54 1061整了很久很久。每次都是死机。 调试也调试了很久,最后发现在2. ... -
【android】一个小问题让我纠结了很久
2012-03-20 09:43 1475之前处理cursor的方法:此方法是有问题的!!! pub ... -
【android】使用checkedTextView形成自定义ListView(续)
2012-03-15 10:06 4711前面的已经介绍了如何将check选中,但是很不尽如人意的是,每 ... -
【android】checkedTextView形成自定义ListView
2012-03-14 16:48 8809网络上的那个东西似乎都不准,以下是我做的此方法为可行。 首先, ... -
【android系统问题】呼叫状态变化
2012-03-09 14:09 1883测试。做一个Receiver监听手机通话状态。发现这样个问题。 ... -
【android】电话接听状态事件
2012-03-01 10:36 3350androidmanifest权限: <uses-per ... -
【android】自定义listView(转http://yilee.info/android-diy-listview.html)
2012-02-29 14:25 1634本文讲实现一个自定义列表的Android程序,程序将实现一个使 ... -
【android】 sqliter数据库CRUD
2012-02-27 16:16 1328基础类,DBHelper package com.duduli ... -
【android】以前没有注意的一个ListActivity的问题
2012-02-27 15:52 1375以前自己都很少使用ListActivity。今天使用的时候就出 ... -
【android】的startActivityForResult
2012-02-24 16:41 1224似乎这个做登录或是论坛回复很好的。 不用返回。 一下几点需要注 ... -
【android】widget生命周期
2012-02-23 17:07 3583在widget开发的时候生命周期如下: 第一次创建桌 ... -
【android】传感器
2011-12-03 10:41 1022IBM develop 对android传感器的研究与开发。 ... -
【android】练手的小玩意
2011-11-30 16:17 1045这是个小程序,调用Google地图。显示你的大概位置。 当然不 ... -
【android】 百度地图应用开发(一)
2011-11-30 11:47 1751百度提供给我相当多的地图开发的api,比如地图,比如定位。 初 ... -
【android】利用service监听来电或来信息
2011-11-28 16:09 8088写这个东西只是为了练手,拍砖随意。反正自己也是菜鸟。 微信/Q ... -
【android地图】开发出现的问题。
2011-11-26 16:24 11122个问题,在虚拟机上没有这样的问题,但是到真机上实验的时候去出 ... -
android开发下的一些技术要点【如有需要会更新】
2011-11-14 15:36 38461,对于去title方法。在o ... -
android开发:Google天气获得气象信息
2011-11-07 16:21 1104这个只能算是半成品,之前想做一个wigdit的。可是没完成。 ...
相关推荐
`ACCESS_FINE_LOCATION`和`INTERNET`权限是必不可少的,前者允许应用访问GPS或其他位置提供者的数据,后者则用于网络通信,因为百度API通常需要网络连接来工作: ```xml <uses-permission android:name="android....
在Android开发中,创建一款基于地图的应用是一项常见的需求,而百度地图API则为开发者提供了强大的地图功能支持。本文将深入探讨如何利用百度地图API来制作Android地图应用,以及实现地图上的位置搜索和周边信息显示...
以上就是“在Android上使用百度地图API显示自己位置”的主要技术点。通过这些步骤,开发者可以实现一个基本的定位并显示功能。在实际应用中,可能还需要根据具体需求进行更多的定制,比如设置定位频率、添加路线规划...
在Android开发中,实现基于百度API的天气预报功能是一项常见的任务。这个小demo为我们提供了一个简单易懂的实例,展示了如何利用HttpClient库获取并解析来自百度API的天气数据。接下来,我们将深入探讨这个过程涉及...
本文将详细介绍如何在Android应用中利用百度API获取地名和城市名,以及相关的步骤和技术要点。 首先,我们需要在百度地图开放平台(http://lbsyun.baidu.com/)上注册账号并创建一个应用,获取到API密钥(AK)。这...
以上就是利用百度地图API在Android中获取当前城市名字的完整流程。通过这个小例子,开发者可以直接在自己的项目中使用这些代码,快速实现定位功能。记住,始终要遵循百度地图API的使用规则,并尊重用户的隐私。
总之,通过正确集成百度地图API,设置定位服务,并处理可能出现的问题,我们可以在Android应用中方便地获取和使用经纬度信息。这个小例子不仅展示了基本的定位功能,还提供了一种解决GPS定位为null的解决方案。
值得注意的是,这里的百度API Key使用的是开发者个人的Key,因此在实际使用时,你需要替换为自己的API Key,以避免不必要的问题。 首先,我们来了解一下如何集成百度地图API到Android应用中: 1. **注册成为百度...
异步获得百度地图 详细地址 城市 省份 街道,已打包成jar包,直接调用即可,不过需要你到百度地图官网注册一个秘钥(ak),这是调用百度地图必须的。使用方法: 1.manifest下声明service: <service android:name=...
在Android开发中,百度地图API是一个非常重要的工具,它提供了丰富的地图展示、定位、路径规划等功能,使得开发者能够轻松地将地图集成到自己的应用程序中。本篇主要探讨如何在Android应用中实现百度地图的标注及...
网上关于百度地图ADI对位的Demo很多,但是找一个定位到当前城市和得到城市名字却很少,很多项目中都有自动地位到当前城市显示城市名字的的功能,我也遇到需要此功能的需求,但是找了好久都没用,于是根据自己写了一...
总结起来,使用百度地图API在Android应用中开发定位功能涉及集成SDK、设置权限、初始化地图、开启定位服务、使用地理编码服务等多个环节。理解并熟练运用这些知识点,将有助于你构建功能丰富的定位应用。
"Android百度地图API定位locSDK_3.1Demo"是一个示例项目,它演示了如何利用百度的LocSDK 3.1版本来实现精确、高效的定位服务。下面将详细介绍这个过程中的关键知识点。 首先,我们需要理解定位的基础概念。定位服务...
本项目“Android百度地图demo”是一个示例工程,它利用了百度官方提供的SDK,帮助开发者快速理解和掌握如何在自己的应用中整合百度地图服务。 首先,我们需要了解**百度地图API**。这是百度为开发者提供的地理位置...
在Android平台上开发应用程序时,有时候我们需要...通过以上步骤,便可以在Android应用中集成并使用百度地图API,实现丰富的地图功能。随着对API的深入理解和实践,开发者可以构建出更多具有创新性和实用性的地图应用。
在Android开发中,集成百度地图API进行定位和地址解析是一项常见的任务。这涉及到地理信息系统(GIS)中的位置服务,主要用于获取设备的当前地理位置,并能够将经纬度坐标转换为可读的地址信息。以下是对这个主题的...
由于包含了28个不同的示例,开发者能够获得丰富的实践经验和灵感,从而更好地掌握百度地图API的使用方法。 【标签】:“android”表明这个项目是专为Android平台设计的,意味着它遵循了Android的开发规范,并且可以...
这个密钥是连接你的应用和百度服务的关键,确保你能使用百度提供的各种服务,包括定位服务。 安装百度地图SDK后,在Android项目中引入相关依赖。在`build.gradle`文件的dependencies块中添加如下依赖: ```groovy ...
文档提供了百度地图API在不同平台上的使用说明,包括Android和iOS平台。在Android平台上,开发者可以通过Intent协议调用百度地图客户端,具体来说,需要使用一个格式为intent://product/[service/]action[?...