1. 程式人生 > >高德地圖自定義infowindow之點選不彈出訊息框

高德地圖自定義infowindow之點選不彈出訊息框

今天在開發過程中,突然產品來了一句地圖上面有要回到以前,再點選Marker的時候需要顯示一個自定義的訊息框,這時候,原本帶著非常陽光的心情上班,結果天氣預報也有不準的時候,我頓時有想搞他的心都有了(之前是他說要去掉這個訊息框),但是作為碼農的我們,當然沒有這個能力!~!
好了,這種情況不是不存在,有些需求可能改了,但還是有返回去的時候,所以在該需求的時候,我們不要把以前的程式碼刪掉了,儲存起來(在此僅針對像我這樣的小白提醒注意,大神的話?勿噴哦!)廢話少說,今天就開始改了,sb的我就是把以前的程式碼刪除了,當然那時也是憤怒的原因,寶寶心裡的苦自己吞就好了,這時候有要重新寫了,不一會c,v了高德上的開發指南,程式碼如下:
aMap.setOnMarkerClickListener(this);// 設定點選marker事件監聽器
aMap.setInfoWindowAdapter(this);
這兩句就是關鍵的,前者是設定點選事件,設定後會有相應的實現方法,後者就是他的佈局器,我是這麼叫,你們也不要在這糾結了,ok?後面就是在實現的方法中填充佈局了:
/**
* 監聽自定義infowindow視窗的infocontents事件回撥
*/
@Override
public View getInfoWindow(Marker marker) {
showMarker = marker;
View infoContent = LayoutInflater.from(getContext()).inflate(
R.layout.custom_info_contents, null);
render(marker, infoContent);
return infoContent;
}

@Override
public View getInfoContents(Marker marker) {
    return null;
}

public void render(Marker marker, View view) {
TextView titleUi = (TextView) view.findViewById(R.id.title);
TextView address = (TextView) view.findViewById(R.id.address);
//Button chooseImg = (Button) view.findViewById(R.id.bt_choose);
int position = (int) marker.getObject();
titleUi.setText(“相距” +addressOfMachine.getAddressDetailList().get(position).getDis());
address.setText(addressOfMachine.getAddressDetailList().get(position).getAddress());
}
直接自信的回頭,點了下run as,直接上高地,點了下marker,我擦,當場尿了,沒反應;這下急了,經過小白一頓埋頭苦幹,終於發現了問題所在,原來在配置marker的時候,忘記配置title了,果斷加上 markerOption.position(latLng).title(“”)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
aMap.addMarker(markerOption).setObject(i);
臥槽,這個時候run as了一把。小白上天了,自信依舊,哈哈,請允許我自娛自樂一把(搞不了產品,還不讓調節自己的情緒了?)。
該篇博文有點廢話,大家抽點自己覺得可以的收下把。。。。