有谁能告诉我我做错了什么?
我可以在Nutiteq
的GeometryLayer上构建和显示多边形,但是当我尝试创建自定义标签时,不显示ViewLabel,DefaultLabel
工作正常。
我有一个普通的XML布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/farmName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/farmName"/>
<TextView
android:id="@+id/area"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/area"/>
</LinearLayout>
我的代码
//Setting Popup Label if we click the area
LayoutInflater inflater =(LayoutInflater)this.
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View labelView = inflater.inflate(R.layout.popup_field, null);
TextView farmNameTV = (TextView)labelView.findViewById(R.id.farmName);
TextView areaTV = (TextView)labelView.findViewById(R.id.area);
farmNameTV.setTextColor(Color.BLACK);
farmNameTV.setTextSize(13*scale);
farmNameTV.setText("Farm Name: "+name);
GeometricUtils geomUtils = new GeometricUtils();
double area = geomUtils.computeArea(coordinates);
areaTV.setTextColor(Color.BLACK);
areaTV.setTextSize(13*scale);
areaTV.setText("Area :"+String.valueOf(area));
labelView.layout(0, 0, 400, 300);
LabelStyle labelStyle = LabelStyle.builder().setBackgroundColor(Color.WHITE).
setEdgePadding((int) (12 * scale)).
setLinePadding((int) (6 * scale)).
setTitleFont(Typeface.create("Arial", Typeface.BOLD),
16 * scale).
setTitleColor(Color.BLACK).
setTitleAlign(Align.CENTER).
setDescriptionFont(Typeface.create("Arial",
Typeface.NORMAL),13 * scale).
setDescriptionColor(Color.BLACK).
setDescriptionAlign(Align.CENTER).
build();
Label fieldLabel = new ViewLabel(fieldname, labelView, new Handler(), labelStyle);
// Without holes!
Polygon pol = new Polygon(outerPoses, null, fieldLabel, polygonStyleSet, null);
geomLayer.add(pol);
我试图以编程方式设置View in XML File的属性,但是没有成功。
我甚至尝试为我的多边形图层编程MapListener的扩展,并从中获取数据
public void onVectorElementClicked(VectorElement vectorElement, double x, double y,
boolean longClick) {
if (vectorElement.getLabel() != null) {
ViewLabel label = vectorElement.getLabel();
...
And here we can get all of data of label
...
}
}
提前致谢!
答案 0 :(得分:4)
问题可能是您没有衡量您的布局,请参阅https://github.com/nutiteq/hellomap3d/wiki/Use-View-for-Label。您应该在webView.layout()
之前添加webView.measure(400, 300);