第一步继承类MainActivity extends Activity implements OnInfoWindowClickListener,InfoWindowAdapter
//给定位的mark添加infoWindow
aMap.setOnInfoWindowClickListener(this);// 设置点击infoWindow事件监听器
aMap.setInfoWindowAdapter(this);// 设置自定义InfoWindow样式
第二步 重写继承类中的方法
//infoWindow回调的方法
@Override
public View getInfoContents(Marker arg0) {
Log.e("infoWindow", "--------------getInfoContents---------------------");
View infoContent = getLayoutInflater().inflate(
R.layout.posi_layout, null);
render(arg0, infoContent);
return infoContent;
}
//当点击mark的时候会调用getInfoWindow 和 render方法 可以来显示或隐藏飘窗
@Override
public View getInfoWindow(Marker arg0) {
Log.e("infoWindow", "--------------getInfoWindow---------------------");
View infoContent = getLayoutInflater().inflate(
R.layout.posi_layout, null);
render(arg0, infoContent);
return infoContent;
}
private void render(Marker arg0, View infoContent) {
Log.e("infowindow", "----------------render--------------------------------");
ImageView image_navi=(ImageView) infoContent.findViewById(R.id.image_posi_navi); //自定义的飘窗布局 添加点击方法
image_navi.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.e("render", "-----image_navi.setOnClickListener----------");
if(mark_posiAPP.getPosition().latitude==0 |mark_posiAPP.getPosition().longitude==0|Double.parseDouble(weidu)==0|Double.parseDouble(jingdu)==0){
Toast.makeText(getApplicationContext(), "定位未成功不能进行路径规划", 0).show();
}else{
Intent intent=new Intent(MainActivity.this,Activity_NaviChoose.class);
intent.putExtra("la_start", mark_posiAPP.getPosition().latitude);
intent.putExtra("ln_start", mark_posiAPP.getPosition().longitude);
intent.putExtra("la_end", Double.parseDouble(weidu));
intent.putExtra("ln_end", Double.parseDouble(jingdu));
startActivity(intent);
}
}
});
}
第三步 通过点击mark显示或隐藏飘窗
//mark点击时调用的方法
@Override
public boolean onMarkerClick(Marker arg0) {
Log.e("mark","----------onMarkerClick--------------------------" );
if(flag_isShowInfoWindow){
Log.e("mark","----------onMarkerClick--------------------------" +flag_isShowInfoWindow);
aMap.clear();
MarkerOptions mark=new MarkerOptions();
mark.position(new LatLng(mark_posiAPP.getPosition().latitude, mark_posiAPP.getPosition().longitude));
BitmapDescriptor fromResource01 = new BitmapDescriptorFactory().fromResource(R.drawable.ic_point_view_num);
mark.icon(fromResource01);
aMap.addMarker(mark);
flag_isShowInfoWindow=false;
}else{ //显示
Log.e("mark","----------onMarkerClick--------------------------" +flag_isShowInfoWindow);
aMap.clear();
MarkerOptions mark=new MarkerOptions();
mark.position(new LatLng(mark_posiAPP.getPosition().latitude, mark_posiAPP.getPosition().longitude));
BitmapDescriptor fromResource01 = new BitmapDescriptorFactory().fromResource(R.drawable.ic_point_view_num);
mark.icon(fromResource01);
mark.title("我是titile"); //不写这个我这就显示不了 也不知道为什么
mark.snippet("我是sippet");
Marker addMarker2 = aMap.addMarker(mark);
addMarker2.showInfoWindow();
aMap.invalidate();// 刷新地图
flag_isShowInfoWindow=true;
}
return false;
}