マップ上に複数のマーカーを表示しようとしています。完全に表示され、onMarkerは、JSONとしてデータベースから取得した情報を表示します。私がしたいのは、カスタムレイアウトやボトムシートに情報を表示することです。ユーザがマーカをタップすると、そのマーカに関連する情報を含むボトムシートが現れます。私は複数のマーカーの表示に次のコードを使用しています。ここでMapViewListenerセクションonTapMarkerでマーカー名を表示するためにmarker.getTitle()を設定しました。しかし、すべてのマーカーに同じマーカー名が表示されています。しかし、正確なデータを表示している地図上のショーに組み込まれたインフォウインドウで。これをどうすれば解決できますか?Android Mapbox SDKを使用して複数のマーカーのカスタムインフォウィンドウを表示
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バージョンを使用しています。私は、タイルミルで作成されたサーバーからカスタムタイルを使用しています。これが私が古いSDKを使用している理由です。残念ながら、setOnMarkerClickListnerをサポートしていません。それは解決されたThogh。私はむしろpMarkerを呼ぶのを忘れた。ここでは.... Toast.makeText(getApplicationContext()、 "Name:" + pMarker.getTitle()、Toast.LENGTH_LONG).show(); –