安卓高德地图之自定义infowindow

来源:互联网 发布:功率优化器 编辑:程序博客网 时间:2024/04/27 14:25

    所谓infowindow为高德地图中点击marker出现的窗体,可根据需要自定义窗体的格式,并实现窗体功能添加。

    在此其他marker添加不赘述,在添加完marker之后,需要使用自定义infowindow的话得先添加监听:

aMap.setOnMarkerClickListener(this);aMap.setInfoWindowAdapter(this);
    之后需要在marker点击事件中显示设置显示infowindow,代码如下:

/* marker点击事件 */@Overridepublic boolean onMarkerClick(Marker marker) {// TODO Auto-generated method stubmarker.showInfoWindow(); // 显示改点对应 的infowindowreturn false;}
    在getInfoWindow中进行infowindow的自定义,先给出代码,结合代码给出解释:

/* 自定义窗体 */@Overridepublic View getInfoWindow(final Marker marker) {// TODO Auto-generated method stubView infoWindow = getLayoutInflater().inflate(R.layout.display, null);//display为自定义layout文件TextView name = (TextView) infoWindow.findViewById(R.id.name);name.setText("景点名称:" + marker.getTitle());LatLng l = marker.getPosition();// 获取标签的位置TextView dis = (TextView) infoWindow.findViewById(R.id.dis);float distance = AMapUtils.calculateLineDistance(l, la) / 1000;// 调用函数计算距离description = "距您所在位置:" + distance + "KM" + "\n";dis.setText(description);TextView des = (TextView) infoWindow.findViewById(R.id.des);des.setText("景点简介:" + marker.getSnippet());//此处省去长篇代码return infoWindow;}
    上述代码先声明一个view变量,后加载自定义的infowindow窗体,需要注意的是给layout中的窗体控件赋值的时候千万注意需要用infowindow.findViewById方法,前面的infowindow为定义的infowindow变量,这一点万不可弄错,否则无法显示。

    另外,添加的marker需要设置title,否则无法显示自定义title。至此,自定义infowindow设置完成。

    如果不想使用高德自带的背景色的话,在自定义布局文件中,添加如下代码即可自定义背景颜色:

 style="background-color: rgb(255, 255, 102);"   android:background="@android:color/transparent" 
    效果图:


    特记下,以备后日回顾。

0 0
原创粉丝点击