如何为 osmdroid 折线创建自定义信息窗口

问题描述 投票:0回答:0

我正在尝试为仅包含文本且必须显示在折线“段”的中心的折线创建自定义信息窗口。我创建了一个简单的信息窗口类(MyInfoWindow):

class MyInfoWindow(layoutResId : Int, map : MapView): InfoWindow(layoutResId, map) {
    init{
        if(titleId == RES_ID){
            setResId(map.context)
        }
        mView.setOnTouchListener(object : OnTouchListener{
            override fun onTouch(p0: View?, p1: MotionEvent?): Boolean {
                if(p1!!.action == MotionEvent.ACTION_UP){
                    close()
                }
                return true
            }

        })
    }
    override fun onOpen(item: Any?) {
        val overlay : OverlayWithIW = item as OverlayWithIW
        val title : String = overlay.getTitle()
        if(mView == null){
            return
        }
        val temp : TextView = mView.findViewById(titleId)
        temp.text = title
    }

    override fun onClose() {

    }

    companion object{
        private const val RES_ID : Int = 0
        var titleId : Int = RES_ID
        fun setResId(context : Context){
            titleId = context.resources.getIdentifier("id/poly_title", null, context.packageName)
            Log.i("title", "$titleId")
        }
    }
}

和一个仅包含要显示的 textView 的 xml 文件(polyline_layout.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="65dp"
    android:layout_height="65dp"
    android:orientation="vertical"
    android:visibility="gone">
    <TextView
        android:id="@+id/poly_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/black"
        android:maxEms="17"
        android:layout_gravity="left"
        android:text="text"/>
</LinearLayout>

从处理 Polyline 的设计类我已经完成了这个

_polyline = Polyline(_map)
_polyline!!.setTitle("distance test")
_infoWindow = MyInfoWindow(R.layout.polyline_layout, _map)
_polyline!!.setInfoWindow(_infoWindow)

我该怎么做才能在折线段的中间显示文本。

不幸的是,即使我点击了这段代码,我也只能看到没有文本的片段。

android kotlin osmdroid infowindow polyline
© www.soinside.com 2019 - 2024. All rights reserved.