我正在使用Google Maps v2 API並在地圖上放置標記。標記表示不同的東西,所以我想爲每個標記類設置一個自定義InfoWindow佈局。問題在於覆蓋getInfoContents
和getInfoWindow
(每次選擇標記時都會調用它)將爲每個標記提供相同的佈局。針對不同標記的不同InfoWindow
有沒有不同的方式來做到這一點,以便我可以爲不同組的標記充氣不同的佈局?
我正在使用Google Maps v2 API並在地圖上放置標記。標記表示不同的東西,所以我想爲每個標記類設置一個自定義InfoWindow佈局。問題在於覆蓋getInfoContents
和getInfoWindow
(每次選擇標記時都會調用它)將爲每個標記提供相同的佈局。針對不同標記的不同InfoWindow
有沒有不同的方式來做到這一點,以便我可以爲不同組的標記充氣不同的佈局?
問題是,重寫的getInfoContents和getInfoWindow,每次選擇標記時都會調用它,將爲每個標記提供相同的佈局。
他們當然不必這樣做。您通過Marker
作爲每種方法的參數,因此可根據Marker
中的信息做出不同的處理。
但你可以。根據您的支票在充氣標記的InfoWindow
之前進行檢查並膨脹不同的佈局。
當您在public View getInfoContents(Marker args)
方法中收到Marker
時,將創建一個if語句,該語句將測試此標記是否與您想要的類型相對應,並基於此充氣相關佈局。
你可以檢查例如什麼位置運行
clickMarkerLatLng = args.getPosition();
標記的座標,並在此determin什麼InfoWindow
應提交爲主。
它非常簡單 map.setInfoWindowAdapter(新InfoWindowAdapter(){
@Override
public View getInfoWindow(Marker marker) {
// TODO Auto-generated method stub
View v;
LayoutInflater inflator=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
v=inflator.inflate(R.layout.info_inflator, null);
TextView text=(TextView)v.findViewById(R.id.title);
Button ok_button=(Button) v.findViewById(R.id.ok_button);
text.setText(marker.getTitle());
ok_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
return v;
}
@Override
public View getInfoContents(Marker marker) {
// TODO Auto-generated method stub
return null;
}
});
你可以比較裏面getifowindow ...那裏你有標記來比較 – 2013-06-04 11:13:51
我最終做的是添加一個鍵/標記到片段的開頭,從標記中提取該標記傳遞給getinfowindow,然後使用switch語句控制顯示的窗口 – Rarw 2013-06-04 12:31:49
同意 - 你可以在每個標記使用不同的信息。例如標題和片段可以標記A和標記B之間的不同。 。然而,在這兩種情況下getInfoContents/getInfoWindow的XML佈局膨脹是不是相同? – Rarw 2013-03-05 18:04:46
@Rarw:不一定,你是膨脹的人,你可以使用像'if'和'else'這樣的數據控制結構來 – CommonsWare 2013-03-05 18:09:08
得到它 - 我將添加一個鍵到其中一個標記值並檢查這種方式。 – Rarw 2013-03-05 18:16:25