我试图创建一个自定义的信息窗口折线,只包含文本,必须在折线"段"的中心显示。我创建了一个简单的InfoWindow类(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)
我怎样才能在折线段的中间显示文本?
不幸的是,这段代码,我只能看到没有文本的片段,即使我已经点击。
创建自己的泡泡时,必须使用特定的id。(这样做时,还要删除与检索您自己的id相关的代码)
看:https://github.com/MKergall/osmbonuspack/wiki/Tutorial_2 9-creating-your-own-bubble-layout