Android开发 百度地图之传送一个详细地址获取在地图上的位置
要求点击一个地址,直接调用百度地图,将地址显示到百度地图上,参数只有一个地址,没有对应的坐标,这就想到了以前做的地图是传送一个坐标,将该地址显示到地图上,就有了这样的思路:怎么将一个详细地址转换成坐标,然后再传送给百度地图,但是这样做好像是虽然能把详细地址转换成坐标,但是这个是在显示地址之后转换的所以就出现了空指针,具体就没再研究,觉得再换一种思路,就在网上看到了百度地图的api上面有一个输入地址点击搜索就会在将该地址显示到了地图上,觉得这个应该就可以,于是好好看了一下百度demo中的GeoCoder这个java文件,这个就是输入一个地址,点击搜索按钮直接显示将地址显示在地图上的,点击搜索是调用的MKSearch的geocode("详细地址","具体城市"),然后我就在我的调用地图的那个界面
初始化地图之后就调用了这个方法,点击进入之后,就一直在加载,显示不出来位置,我这里跟他的唯一区别就是百度地图demo是点击触发这个事件,而我是初始化地图后就调用该方法。但是这是为什么呢,我的为什么一直就加载中,但是不显示呢。
一下代码是百度地图demo的代码
// 初始化搜索模块,注册事件***
mSearch = new MKSearch();
mSearch.init(app.mBMapMan, new MKSearchListener() {
public void onGetPoiDetailSearchResult(int type, int error) {
public void onGetAddrResult(MKAddrInfo res, int error) {
if (error != 0) {
String str = String.format("错误号:%d", error);
Toast.makeText(GeoCoder.this, str, Toast.LENGTH_LONG).show();
mMapView.getController().animateTo(res.geoPt);
String strInfo = String.format("纬度:%f 经度:%f\r\n", res.geoPt.getLatitudeE6()/1e6,
res.geoPt.getLongitudeE6()/1e6);
Toast.makeText(GeoCoder.this, strInfo, Toast.LENGTH_LONG).show();
Drawable marker = getResources().getDrawable(R.drawable.iconmarka);
//得到需要标在地图上的资源
marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker
.getIntrinsicHeight());
//为maker定义位置和边界
mMapView.getOverlays().clear();
mMapView.getOverlays().add(new OverItemT(marker, GeoCoder.this, res.geoPt, res.strAddr));
public void onGetPoiResult(MKPoiResult res, int type, int error) {
if (error != 0 || res == null) {
Toast.makeText(GeoCoder.this, "解析失败", Toast.LENGTH_LONG).show();
if (res != null && res.getCurrentNumPois() > 0) {
GeoPoint ptGeo = res.getAllPoi().get(0).
// 移动地图到该点:
mMapView.getController().animateTo(ptGeo);
String strInfo = String.format("纬度:%f 经度:%f\r\n", ptGeo.getLatitudeE6()/1e6,
ptGeo.getLongitudeE6()/1e6);
strInfo += "\r\n附近有:";
for (int i = 0; i < res.getAllPoi().size(); i++) {
strInfo += (res.getAllPoi().get(i).name + ";");
Toast.makeText(GeoCoder.this, strInfo, Toast.LENGTH_LONG).show();
public void onGetDrivingRouteResult(MKDrivingRouteResult res,
int error) {
public void onGetTransitRouteResult(MKTransitRouteResult res,
int error) {
public void onGetWalkingRouteResult(MKWalkingRouteResult res,
int error) {
public void onGetBusDetailResult(MKBusLineResult result, int iError) {
public void onGetSuggestionResult(MKSuggestionResult res, int arg1) {
// TODO Auto-generated method stub
public void onGetRGCShareUrlResult(String arg0, int arg1) {
// TODO Auto-generated method stub
EditText editCity = (EditText)findViewById(R.id.city);
EditText editGeoCodeKey = (EditText)findViewById(R.id.geocodekey);
mSearch.geocode(editGeoCodeKey.getText().toString(), editCity.getText().toString());
后来网友就说该方法是被动的方法,要主动调用,建议用一个线程去调用,我就在初始化地图之后,写了一个线程,在线程里调用MKSearch的geocode("详细地址","具体城市")方法,果然加载成功了。但是有一个问题是,我必须的点击一下屏幕,地图才刷新,有开始在网上搜,说是把Mainfest.xml文件中的androidmanifest 的android:targetSdkVersion="10"去掉就可以了,果然成功了!
在说一下,这个是成功了,但是还有一个问题,让地址显示到地图上之后,还想弹出一个详细地址,一直放到地图上,现在是可以将地标放到地图上,如下代码,该代码写到***事件中MKSearchListener()
Drawable marker = getResources().getDrawable(R.drawable.point_start);
//得到需要标在地图上的资源
marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker
.getIntrinsicHeight());
//为maker定义位置和边界
View mPopView = getLayoutInflater().inflate(R.layout.popview2, null);
OverItemT overItemT = new OverItemT(marker, LocationActivity.this, res.geoPt, res.strAddr);
但是我想弹出个详细地址的泡泡,这该怎么做呢,百度地图demo中还有一个ItemizedOverlayDemo这个类是可以显示泡泡的,但是这个是点击地标之后会弹出泡泡,如下代码如下
// 处理当点击事件
protected boolean onTap(int i) {
setFocus(mGeoList.get(i));
// 更新气泡位置,并使之显示
GeoPoint pt = mGeoList.get(i).getPoint();
ItemizedOverlayDemo.mMapView.updateViewLayout( ItemizedOverlayDemo.mPopView,
new MapView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
pt, MapView.LayoutParams.BOTTOM_CENTER));
ItemizedOverlayDemo.mPopView.setVisibility(View.VISIBLE);
Toast.makeText(this.mContext, mGeoList.get(i).getSnippet(),
Toast.LENGTH_SHORT).show();
哈哈,我把改代码写到了
我把以上代码写到了MKSearchListener()这个***事件里,但是这时会报错,原来是因为我没有将弹出气泡添加到地图里就update了,应该在MKSearchListener()这个***事件加上如下代码
// 创建点击mark时的弹出泡泡
mPopView=super.getLayoutInflater().inflate(R.layout.popview, null);
mMapView.addView( mPopView,
new MapView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
null, MapView.LayoutParams.TOP_LEFT));
mPopView.setVisibility(View.GONE);
加上代码之后就可以在地标的图片位置有弹出的详细地址泡泡了,但是这时候就是弹出的泡泡跟地标图片重叠了,刚开始我想在update处改一下泡泡的位置,但是这个不是简单的
point,所以后来我想到了修改泡泡的layout文件,哈哈,最后就成功了。
代码下载地址如下:http://download.csdn.net/detail/ladyweiwei
参考百度地图demo下载地址如下(1.3.5版本):http://download.csdn.net/detail/ladyweiwei
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'怎样用GIS做地图我现在有一GPS,目前能通过一系列的算法提取到GPS发出来的数据,包括经纬度、速度、方向等数据,现在我要用每10秒接收到的经纬度数据做成GIS地图,并能将坐标显示在地图上,怎样才能做到?希望能详细点说明..
落落为君10715
如果已经有了经纬度,在ArcGIS软件当中可以利用菜单Tool->Add XY Data命令将这些数据导入到ArcGIS中.首先把数据在Excel中按照纬度、经度、速度、方向等整理好并保存.接着在ArcGIS中单击Tool->Add XY Data命令,选择保存的Excel数据(需要2003格式的),X Field选择纬度,Y Field选择经度,坐标系统点击Edit->Select->Geographic Coordinate Systems->World->WGS 1984.prj就可以得到一个点状地图了.
为您推荐:
其他类似问题
你得先找个gps的数据处理软件看能不能成图,如果可以直接数据转化最好,不行的话可以按照gps成的图矢量化成gis图。
扫描下载二维码最后登录14-3-8在线时间15 小时赞0 注册时间11-12-28积分86帖子精华0UID285889
注册日期: 11-12-28
帖子: 25|积分: 86
赞助商广告
Safari 5.1.2
Mac OS X 10.7.2
出去旅游,回来想把旅游的线路做在地图上:走过的地方红线行进,到一个点,停下,接着是风光;下一切,红线接着行进,风光,如此往复。
记得以前看战争片时有类似的(动画)
最后登录17-1-6在线时间63991 小时赞465 注册时间05-4-23积分76947帖子精华171UID4
分享于 14-1-8 00:32:37
Safari 7.0.1
Mac OS X 10.9.1
右边点地图就可以在视频时间向上增加 地图的功能.
然后就选择你喜欢的过场就可以了.
(32.57 KB, 下载次数: 13)
14-1-8 00:31:55 上传
下载次数: 13
总评分:&苹果 + 3&
最后登录17-1-6在线时间63991 小时赞465 注册时间05-4-23积分76947帖子精华171UID4
分享于 14-1-7 23:46:43
Safari 7.0.1
Mac OS X 10.9.1
你这个要求 FCP 能做, 但是一般人用FCP做不了.
我建议你用一下 iMovie 里面的一个内建模板 , 有专门的这个功能.
最后登录14-3-8在线时间15 小时赞0 注册时间11-12-28积分86帖子精华0UID285889
分享于 14-1-8 00:15:48
Safari 5.1.2
Mac OS X 10.7.2
IMOVIE哪个模板,请明示一下。
IMOVIE也有用,但也是新手。
最后登录17-1-6在线时间8454 小时赞15 注册时间12-4-1积分3737帖子精华0UID326794
( ☆☆☆☆ )
分享于 14-1-8 00:23:54
Safari 7.0.1
Mac OS X 10.9.1
FCP需要你自己做地图场景以及素材。甚至要用Motion做类似转场的特效。imovie里面新建预告片、
最后登录14-3-8在线时间15 小时赞0 注册时间11-12-28积分86帖子精华0UID285889
分享于 14-1-8 00:28:34
Safari 5.1.2
Mac OS X 10.7.2
imovie里面新建预告片,,,我刚看了,有冒险、动作、友情、史诗剧、大片、宠物、旅行、浪漫喜剧、灵异片、爱情故事、纪录片、节日、运动、间谍、黑色电影。
还是不知是哪个模板,试了几个,似乎没有
最后登录14-3-8在线时间15 小时赞0 注册时间11-12-28积分86帖子精华0UID285889
分享于 14-1-8 00:36:00
Safari 5.1.2
Mac OS X 10.7.2
是旅行模板里的那个吧,位置是要从弹出窗中选。
想做的是这种效果,但地图最好能用自己的,比如在欧洲几个小国中穿行,而且想要多段。如果用这个模板,是否一次就做一小段出来,FCP中再拼接?
最后登录17-1-6在线时间63991 小时赞465 注册时间05-4-23积分76947帖子精华171UID4
分享于 14-1-8 00:40:17
Safari 7.0.1
Mac OS X 10.9.1
车改 发表于 14-1-8 00:36
是旅行模板里的那个吧,位置是要从弹出窗中选。
想做的是这种效果,但地图最好能用自己的,比如在欧洲几个 ...
Map 功能可以在时间线里面添加多次使用. 在设置上只要选择 开始与结束,
地点的画线与地球转动都是模板自动完成.
看似楼主你不需要 FCP , iMovie 其实对于普通家庭电影来说更好一些.
但是千万别弄这个模板去外面做商业应用, 因为现在iMovie已经不是新鲜产物了.
最后登录14-3-8在线时间15 小时赞0 注册时间11-12-28积分86帖子精华0UID285889
分享于 14-1-8 00:52:25
Safari 5.1.2
Mac OS X 10.7.2
嗯,目前的水平只能自娱自乐一下
谢谢Wally的指点。如果将来有提高,那还是用熟FCP,毕竟非编是想了多年想学的。
刚试了一下IMOVIE,容易上手,赞一个!
最后登录16-11-18在线时间1624 小时赞1 注册时间07-1-27积分2233帖子精华0UID39943
( ☆☆☆☆ )
分享于 14-1-8 12:12:53
Safari 7.0.1
Mac OS X 10.9.1
motion 画笔工具 在衬底地图上描出路线 加Write 就可以了