大概讲解:

在百度地图上显示一个marker,当marker被点击后,显示自定义的View.当自定义的View被点击后,响应不同Button的点击事件。被百度这个infowindo里面的view坑惨了,一直以为不能点击呢??原来里面的view可以点击也可以被响应!!

先看效果图:

c394951e63169d142b329a6c55a1ce0f.png

备注:点击详情(进入此任务详情、点击导航进入百度导航)

代码如下:

baiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {

@Override

public boolean onMarkerClick(Marker marker) {

LatLng latLng =marker.getPosition();

InfoWindow currentInfoWindow = new InfoWindow(getInfoWindoView(marker,taskJson),latLng, -77);

baiduMap.showInfoWindow(currentInfoWindow);

return true;

}

});

那么Infowindow的自定义View在哪里呢?

private View getInfoWindoView(final Marker marker,final JsonObject taskJson){

if (null == infoView) {

infoView = (ViewGroup) LayoutInflater.from(assignmentsActivity).inflate(R.layout.balloon_overlay, null);

}

tvTitle = (TextView) infoView.findViewById(R.id.balloon_item_title);

tvDetailLocation = (TextView) infoView.findViewById(R.id.balloon_item_snippet);

layout_taskInfo = (LinearLayout) infoView.findViewById(R.id.layout_taskInfo);

iv_navigation = (ImageView) infoView.findViewById(R.id.iv_navigation);

tvTitle.setText(marker.getExtraInfo().getString("title"));

tvDetailLocation.setText(marker.getExtraInfo().getString("subject"));

layout_taskInfo.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Common.switchToTaskDetail(assignmentsActivity, taskJson);

}

});

iv_navigation.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

viewInMapApp(marker.getPosition().latitude, marker.getPosition().longitude);

}

});

return infoView;

}

Infowindow在初始化的时候一定要这样 才可以响应单独的点击事件。

InfoWindow currentInfoWindow = new InfoWindow(getInfoWindoView(marker,taskJson),latLng, -77);

Technorati 标签: 百度地图,android百度

原文:http://www.cnblogs.com/lixiaodaoaaa/p/4503810.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐