日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

android平台 arcgisr_ArcGIS Runtime For Android 开发 (7)

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android平台 arcgisr_ArcGIS Runtime For Android 开发 (7) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第七課 圖層管理

在前邊的課程中,我們學習了如何加載圖層,符號化圖層,那么如果一個項目里邊包含了很多的圖層,但又需要進行查看特定的圖層,怎么辦?是的,我們需要對加載的圖層進行管理。

那么如何來實現圖層的管理?從地圖控件中獲取加載的圖層,然后把圖層綁定到一個列表控件上,然后點擊列表控件的選項控制圖層的顯示和隱藏就好了。思路有了,接下來就是動手實現了。

首先呢,我們設計圖層管理的布局。

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/overmaplyrmanage"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

接下來,我們設計列表的綁定數據項布局。在列表中當我選中或者表示顯示時,有個狀態,未選中或者圖層隱藏時有個狀態,說明我們需要一個控件來表示狀態;圖層的名字也需要顯示,我們需要一個Text View,簡單的我們就放這些,來看下代碼:

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:gravity="center_vertical"

android:layout_height="45dp"

android:layout_gravity="center_vertical"

android:orientation="horizontal"

android:background="@color/colorWhite">

android:id="@+id/visibleCheck"

android:layout_width="48dp"

android:layout_height="48dp"

android:layout_gravity="center_vertical"

android:padding="5dp"

app:srcCompat="@drawable/ic_check_box_unchecked" />

android:id="@+id/layerText"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:gravity="center_vertical"

android:text="1234556678909"

/>

好了,界面設計好了,那么我們將數據綁定到界面上:

var layers = mapView.layers

LyrCheckItem.ITEMS.clear()

for (i in layers.indices) {

var lyr = layers[layers.size - 1 - i]

var layername = lyr.name //圖層名字逆放

var icon: Int

if (lyr.isVisible) {

icon = R.drawable.ic_check_box_checked

} else {

icon = R.drawable.ic_check_box_unchecked

}

val dummyItem = LyrCheckItem.DummyItem(i.toString() + "", layername, lyr.isVisible, icon)

LyrCheckItem.addItem(dummyItem)

}

var contentView = LayoutInflater.from(this@LandSurveryActivity).inflate(R.layout.ovmaplyr, null)

var lyrList = contentView.findViewById(R.id.overmaplyrmanage) as RecyclerView

lyrList.layoutManager = LinearLayoutManager(mContex)

lyrList.adapter = OverLayerManagerAdapter(LyrCheckItem.ITEMS, mapView)

//使用popwindow顯示

var popWindow = PopupWindow()

popWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT)

popWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT)

popWindow.contentView = contentView

popWindow.update()

popWindow.setFocusable(true)

var dw = ColorDrawable(Color.WHITE)

popWindow.setBackgroundDrawable(dw)

popWindow.showAsDropDown(btnOvLryMg)

OverLayerManagerAdapter :

/**

* Created by Singfee on 2018/2/3.

*/

class OverLayerManagerAdapter(lyrList: ArrayList, mapView: MapView) : RecyclerView.Adapter() {

private var layerList: ArrayList

private var mapView: MapView

init {

layerList = lyrList

this.mapView = mapView

}

override fun onBindViewHolder(holder: ViewHolder?, position: Int) {

holder?.mItem=layerList[position]

holder?.tv_lyrName?.text = layerList[position].layerName

if(layerList[position].status)

holder?.image_check?.setImageResource(R.drawable.ic_check_box_checked)

else

holder?.image_check?.setImageResource(R.drawable.ic_check_box_unchecked)

holder?.view?.tag=position

holder?.itemView?.setOnClickListener { v: View? ->

val lyrs = mapView.layers

for (lyr in lyrs) {

if (lyr.name.equals(holder?.mItem?.layerName)) {

lyr.isVisible = !lyr.isVisible

holder.mItem?.status =lyr.isVisible

if (lyr.isVisible) {

holder.image_check.setImageResource(R.drawable.ic_check_box_checked)

} else {

holder.image_check.setImageResource(R.drawable.ic_check_box_unchecked)

}

}

}

}

}

override fun getItemCount(): Int {

return layerList.size

}

override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder {

return OverLayerManagerAdapter.ViewHolder(LayoutInflater.from(parent?.context).inflate(R.layout.lyr_manager_item, parent, false))

}

class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {

val image_check: ImageView =itemView.findViewById(R.id.visibleCheck)

val tv_lyrName: TextView =itemView.findViewById(R.id.layerText)

val view:View=itemView

var mItem: LyrCheckItem.DummyItem? = null

}

}

在界面上,打開圖層管理的時候,我們不能將地圖界面關閉,要實現這種有幾個方式可選,使用PopupWindow,主界面相對布局中使用fragment,以及使用fragmentDialog。我這里實現的是使用的PopupWindow。

在系統中我只是簡單的控制了圖層的顯示和隱藏,如果你有興趣,可以對圖層進行拖動排序、透明度設置等。

總結

實現圖層控制的步驟有一下幾個:

1.設計圖層控制的界面布局

2.實現列表控件的適配器

3.綁定數據到列表控件上

在綁定的時候一定要注意解決當圖層比較多的時候,用戶滑動列表后,刷新狀態導致的顯示不正確問題。

總結

以上是生活随笔為你收集整理的android平台 arcgisr_ArcGIS Runtime For Android 开发 (7)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。