0
我想要在地圖上可視化多個標記。它的完美展示和onMarkerTap從數據庫檢索的顯示信息爲JSON。我想要做的是在自定義佈局或底部工作表中顯示信息。當用戶點擊標記時,底部表單將出現,並顯示與該標記相關的信息。我正在使用下面的代碼來顯示多個標記。這裏MapViewListener部分onTapMarker我已經設置了marker.getTitle()在Toast中顯示標記名稱以進行測試。但它爲所有標記顯示相同的標記名稱。但在地圖上顯示的infoWindow中顯示精確的數據。我該如何解決這個問題?使用Android Mapbox SDK顯示多個標記的自定義infoWindow
FloatingActionButton layerButton = (FloatingActionButton)findViewById(R.id.layer);
layerButton.setOnClickListener(new View.OnClickListener() {
public void getData() {
String url = Config.DATA_URL;
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
showJSON(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this,error.getMessage().toString(),Toast.LENGTH_LONG).show();
}
});
requestQueue.add(stringRequest);
}
public void showJSON(String response){
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray(Config.JSON_ARRAY);
for (int i=0;i<jsonArray.length();i++){
JSONObject singleMarker = jsonArray.getJSONObject(i);
String poi_name = singleMarker.getString(Config.POI_NAME);
String poi_latitude = singleMarker.getString(Config.POI_LATITUDE);
String poi_longitude = singleMarker.getString(Config.POI_LONGITUDE);
Double dbl_latitude = Double.parseDouble(poi_latitude);
Double dbl_longitude = Double.parseDouble(poi_longitude);
final Marker marker = new Marker(poi_name, poi_thananame, new LatLng(dbl_latitude, dbl_longitude));
marker.setMarker(getResources().getDrawable(R.mipmap.poi_shopping));
mapView.addMarker(marker);
mapView.setMapViewListener(new MapViewListener() {
@Override
public void onShowMarker(MapView pMapView, Marker pMarker) {
}
@Override
public void onHideMarker(MapView pMapView, Marker pMarker) {
}
@Override
public void onTapMarker(MapView pMapView, Marker pMarker) {
Toast.makeText(getApplicationContext(), " Name: "+marker.getTitle()+, Toast.LENGTH_LONG).show();
}
@Override
public void onLongPressMarker(MapView pMapView, Marker pMarker) {
}
@Override
public void onTapMap(MapView pMapView, ILatLng pPosition) {
}
@Override
public void onLongPressMap(MapView pMapView, ILatLng pPosition) {
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
//
// mapView.setCenter(new LatLng(dbl_latitude, dbl_longitude));
// mapView.setZoom(18);
}
//////END OF GET DATA///////
@Override
public void onClick(View v) {
clearLayerFAB.setVisibility(View.VISIBLE);
getData();
}
});
我正在使用0.7.4 SDK版本。我正在使用tilemill創建的服務器使用自定義磁貼。這就是我使用舊SDK的原因。不幸的是,它不支持setOnMarkerClickListner。 Thogh解決了。我忘了叫pMarker而不是標記。這裏是... Toast.makeText(getApplicationContext(),「Name:」+ pMarker.getTitle(),Toast.LENGTH_LONG).show(); –