我正在尝试为仅包含文本且必须显示在折线“段”的中心的折线创建自定义信息窗口。我创建了一个简单的信息窗口类(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)
我该怎么做才能在折线段的中间显示文本。
不幸的是,即使我点击了这段代码,我也只能看到没有文本的片段。