Ich stehe vor dem Problem, detaillierte Informationen (Daten) von Marker zu NestedScrollView von BottomSheet zu bekommen. Wenn ich Marker geklickt habe, scrollt NestedScrollView von unten nach oben und zeigt die entsprechenden Daten an. Ich benutze json um Daten zu bekommen.Wie man Daten vom Marker zum BottomSheet bekommt, wenn Marker auf Google Map klickt
Mein Quellcode:
public class SeekingMapActivity extends AppCompatActivity implements
GoogleApiClient.OnConnectionFailedListener,
GoogleApiClient.ConnectionCallbacks,
View.OnClickListener {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_seeking_main);
...
ArrayList<HashMap<String, String>> location = null;
String url = "myURL";
try {
JSONArray data = new JSONArray(getHttpGet(url));
location = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
for (int i = 0; i < data.length(); i++) {
JSONObject c = data.getJSONObject(i);
map = new HashMap<String, String>();
map.put("title", c.getString("title"));
map.put("avatar", c.getString("avatar"));
map.put("lat", c.getString("lat"));
map.put("mapLong", c.getString("mapLong"));
map.put("address", c.getString("address"));
location.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
// googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
IconGenerator tc = new IconGenerator(this);
String price = "1200K";
Bitmap bmp = tc.makeIcon(price); // pass the text you want.
lat = Double.parseDouble(location.get(0).get("lat").toString());
mapLong = Double.parseDouble(location.get(0).get("mapLong").toString());
LatLng coordinate = new LatLng(lat, mapLong);
googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
googleMap.getUiSettings().setMapToolbarEnabled(false);
googleMap.getUiSettings().setRotateGesturesEnabled(true); // Enable RotateGestures
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(coordinate, 15));
for (int i = 0; i < location.size(); i++) {
lat = Double.parseDouble(location.get(i).get("lat").toString());
mapLong = Double.parseDouble(location.get(i).get("mapLong").toString());
String title = location.get(i).get("title").toString();
String avatar = location.get(i).get("avatar".toString());
String address = location.get(i).get("address").toString();
MarkerOptions marker = new MarkerOptions().position(new LatLng(lat, mapLong))
.title(title)
.snippet(address)
.icon(BitmapDescriptorFactory.fromBitmap(bmp)); // .anchor(0.5f, 0.6f)
googleMap.addMarker(marker);
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
{
@Override
public boolean onMarkerClick(Marker arg0) {
if(isClick==false)
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
else
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
isClick=!isClick;
// Toast.makeText(SeekingMapActivity.this, arg0.getTitle(), Toast.LENGTH_SHORT).show();// display toast
return true;
}
});
}
}
...
}
Layout BottomSheet:
<android.support.v4.widget.NestedScrollView
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="270dp"
android:clipToPadding="true"
android:background="@color/white"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior"
> <!-- android:background="@android:color/background_holo_light" -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/mercedes"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="1,200,000"
android:textSize="20dp"
android:textStyle="bold"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1b"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Số cửa: 4 cửa"
android:textSize="14dp"/>
<!-- android:textAppearance="?android:attr/textAppearanceMedium" -->
<TextView
android:id="@+id/textView1c"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Số ghế: 4 chỗ"
android:textSize="14dp"/>
</LinearLayout>
<TextView
android:id="@+id/textView1d"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Địa chỉ: Quân Cầu giấy, Hà Nội"
android:textSize="14dp" />
<TextView
android:id="@+id/textView1e"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="KIỂM TRA TÌNH TRẠNG XE"
android:textStyle="bold"
android:textColor="@color/greenColor"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
Ich weiß nicht, wie
Daten von Hersteller zu NestedScrollView bekommenBeispiel:
When click: Marker A, data of marker A will display on NestedScrollView
Marker B, data of marker B will display on NestedScrollView
Wenn Sie weitere Informationen benötigen, werde ich mehr posten!
Can Bitte beschreiben Sie die Lösung genauer? Wie deklarieren Sie später den Marker und andere Momente? – Morozov
@Morozov: Ich verstehe Ihren Standpunkt nicht, können Sie bitte Ihren Standpunkt erläutern? – Bhavnik