0
マーカーからBottomSheetのNestedScrollViewまでの詳細情報(データ)を取得する際の問題に直面しています。 markerをクリックすると、NestedScrollViewが下から上にスクロールして対応するデータを表示します。私はjsonを使ってデータを取得しています。Google MapでマーカーがクリックされたときにマーカーからBottomSheetにデータを取得する方法
私のソースコード:BottomSheetの
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;
}
});
}
}
...
}
レイアウト:
<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>
私は例
NestedScrollView
にメーカーからデータを取得する方法がわかりません。When click: Marker A, data of marker A will display on NestedScrollView
Marker B, data of marker B will display on NestedScrollView
さらに詳しい情報が必要な場合は、さらに投稿します。
缶あなたは解決策をより詳しく記述してください。後でマーカーやその他の瞬間をどのように宣言しますか? – Morozov
@モロゾフ:私はあなたの意見を得ていない、あなたはあなたのポイントを詳しく教えていただけますか? – Bhavnik