android百度点击弹出信息框,百度地图的覆盖物点击显示提示框信息

在百度地图中,搜索功能需要注意的块。

90bcc3f6450d60515ea17f7f79a2983e.gif

搜索到的详情需要在这里处理,如果这里传递参数,然后,在覆盖物监听事件里边取得参数需要这样放OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener(){

public void onGetPoiResult(PoiResult result){

//获取POI检索结果

if(result==null||result.error!= SearchResult.ERRORNO.NO_ERROR){

return;

}

for(final PoiInfo poi: result.getAllPoi()){

System.out.println(poi.name + "--" + poi.location + "--" + poi.address);

// 位置取出来坐标

latLng = poi.location;

//得到图片

BitmapDescriptor bitmap = BitmapDescriptorFactory

.fromResource(R.drawable.icon_mark4);

// 图标覆盖物的坐标图片和所在层数关联

overlayOptions = new MarkerOptions().position(latLng)

.icon(bitmap).zIndex(5);

//这个不清楚,= 号后边半句是添加覆盖物,给marker赋值就不清楚了

marker = (Marker) (mBaiduMap.addOverlay(overlayOptions));

//这里开始传递参数,需要用到bundle

Bundle bundle=new Bundle();

//这是一个实体类的实例化

bean b=new bean();

//这是把name设置到实体类里边,下边用到name,所以把它传过去

b.setName(poi.name);

//用bundle的putserializable方法把整个实体类传过去

bundle.putSerializable("info",b);

//用marker传递的

marker.setExtraInfo(bundle);

}

// 将地图移到到最后一个经纬度位置

MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(latLng);

mBaiduMap.setMapStatus(u);

}

public void onGetPoiDetailResult(PoiDetailResult result){

//获取Place详情页检索结果

}

@Override

public void onGetPoiIndoorResult(PoiIndoorResult poiIndoorResult) {

}

};

//设置搜索功能的监听

mPoiSearch.setOnGetPoiSearchResultListener(poiListener);

这是一个按钮的事件,就是搜索用的事件search.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//搜索在城市中的

/* mPoiSearch.searchInCity((new PoiCitySearchOption())

.city("北京")

.keyword("美食")

.pageNum(10));*/

//搜索左边附近的

//添加一个左边 “1”图片坐标

LatLng pt1 = new LatLng(39.93923, 116.357428);

addOverLay(pt1, R.drawable.icon_mark1);

mPoiSearch.searchNearby((new PoiNearbySearchOption())

.location(pt1)

.keyword("美食")

.radius(1000)

.pageNum(10));

}

});/**

* 添加标记在地图中

* @param point

* @param pic 图片id

*/

public void addOverLay(LatLng point,int pic) {

//定义Maker坐标点

// LatLng point = new LatLng(39.963175, 116.400244);

//构建Marker图标

BitmapDescriptor bitmap = BitmapDescriptorFactory

.fromResource(pic);

//构建MarkerOption,用于在地图上添加Marker

OverlayOptions option = new MarkerOptions()

.position(point)

.icon(bitmap).zIndex(4);

//在地图上添加Marker,并显示

marker=(Marker) mBaiduMap.addOverlay(option);

/*这里这样写,为了让“1”图片也可以点击,如果这里不把“1”图片的信息存到里边,点击“1”图片会报错,空指针错误*/

//Bundle用于通信

Bundle bundle = new Bundle();

bean b=new bean();

b.setName("dddd");

b.setLatLng(new LatLng(39.93923, 116.357428));

bundle.putSerializable("info", b);

marker.setExtraInfo(bundle);//将bundle值传入marker中,给baiduMap设置监听时可以得到它

}

//给覆盖物添加点击事件,显示所表示的信息

mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {

@Override

public boolean onMarkerClick(Marker marker) {

InfoWindow mInfoWindow;

//得到上边传过来的实体类的信息

bean b= (bean) marker.getExtraInfo().get("info");

//生成一个TextView用户在地图中显示InfoWindow

TextView location = new TextView(getApplicationContext());

location.setBackgroundResource(R.drawable.icon_mark3);

location.setPadding(30, 20, 30, 50);

//去除设置实体类里边name的信息

location.setText(b.getName());

//将marker所在的经纬度的信息转化成屏幕上的坐标

final LatLng ll = marker.getPosition();

Point p = mBaiduMap.getProjection().toScreenLocation(ll);

p.y -= 47;

LatLng llInfo = mBaiduMap.getProjection().fromScreenLocation(p);

//为弹出的InfoWindow添加点击事件,0的位置本事看到别人写的是事件的但是我不知道为什么我不能写,只能写数字,数字随便写的没什么作用

mInfoWindow = new InfoWindow(location, llInfo, 0);

//显示InfoWindow

mBaiduMap.showInfoWindow(mInfoWindow);

return true;

}

});

实体类package com.example.ui_1.bmap;

import java.io.Serializable;

public class bean implements Serializable{

String name ;//店名

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

putSerializable和 getSerializable的使用()

dPgAAAAAAAAA&ek=1&kp=1&pt=0&bo=yALwAcgC8AEDACU!&su=1135879825&sce=0-12-12&rf=2-9

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值