2016-12-05 105 views
0

我正面臨着從標記到BottomSheet的NestedScrollView獲取詳細信息(數據)的問題。 當我點擊標記時,NestedScrollView將從底部向上滾動並顯示相應的數據。我使用JSON來獲取數據。當標記點擊Google地圖時,如何從標記獲取數據到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; 
      } 
     }); 
    } 
} 
... 

} 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> 

我不知道如何從製造商的數據NestedScrollView

例子:

When click: Marker A, data of marker A will display on NestedScrollView 
      Marker B, data of marker B will display on NestedScrollView 

如果您需要更多信息,我會發布更多!

回答

1

1 - 與您的屬性,如標題,頭像,地址等創建模型類...

2 - 創建模型類型的ArrayList

3 - 將所有這些數據在您的ArrayList

4 - 現在您的標記onMarkerClick方法,迭代for循環,並與您的ArrayList標題/唯一ID的位置如下圖所示比較該標記的標題或唯一ID:

googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
      @Override 
      public boolean onMarkerClick(Marker marker) { 
       for (int i = 0; i < arrayList.size(); i++) { 
        if (marker.getTitle().equals(finalMSearchResultModel.getRecords().get(i).getHotelName())) { 
        // YOUR ACTION GOES HERE 
        } 
       } 
       return false; 
      } 
     }); 
+0

燦你請詳細描述解決方案?你如何後來宣佈標記和其他時刻? – Morozov

+0

@Morozov:我不明白你的觀點,請你詳細說明你的觀點? – Bhavnik

相關問題