我是android和java的新手,我正在androidstudio中用数据库和mapboxMap编写我的第一个应用程序。我在使用room持久性库的.sqlite中有一些活动和数据库。现在我正在编写一个mapbox活动。
我正在编写一个显示Map的活动。这张Map显示了几个标记。现在,我想在单击后实现带有每个标记信息(例如地址、门牌号、坐标)的小注解。此时,标记本身是通过遍历带有for循环的列表来创建的。
如何在没有geojson文件的情况下创建注解窗口,但要访问sqlite数据库。有可能吗?我只找到这样的例子:https://docs.mapbox.com/android/maps/examples/symbol-layer-info-window/?size=n_10_n 它使用一个geojson文件,它被转换成一个列表,但我只有一个列表。
如何以sqlite数据库作为源代码实现该示例的最佳方法?提前谢谢!
@Override
public void onMapReady(@NonNull final MapboxMap mapboxMap) {
MapboxActivity.this.mapboxMap = mapboxMap;
mapboxMap.setStyle(
new Style.Builder().fromUri("mapbox://styles/aroid435/ckiohlr9a0c3m17nq6tx5ajjs")
,
new Style.OnStyleLoaded() {
@Override
public void onStyleLoaded(@NonNull Style style) {
enableLocationComponent(style);
SymbolManager symbolManager = new SymbolManager(mapView, mapboxMap, style);
mapboxMap.animateCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder().target(new LatLng(51.051877, 13.741517)).zoom(10.5).build()));
for (int i= 0; i < stolpersteine_list.size() ; i = i+1 ) {
mapboxMap.getStyle().addImage("my-star-marker", BitmapFactory.decodeResource(getResources(), R.drawable.rectangle));
symbolManager.create(new SymbolOptions()
.withLatLng(new LatLng( stolpersteine_list.get(i).getLatitude(),stolpersteine_list.get(i).getLongitude()))
.withIconImage("my-star-marker")
.withIconAnchor("bottom"));
}
}
});
} // end of onMapReady
´´´
1条答案
按热度按时间p8ekf7hl1#
我想办法,如何把我的数据库转换成Map框列表。这是我的密码:
但现在我不知道如何添加一个点的属性。这样,我只能将标记可视化,但不能向列表中添加其他值并绘制注解窗口。我不能在for循环中使用addstringproperty(string key,string value)或addproperty(string key,com.google.gson.jsonelement value),因为我得到一个错误:不能从静态上下文引用非静态方法“addstringproperty(java.lang.string,java.lang.string)”。
https://docs.mapbox.com/archive/android/java/api/libjava-geojson/2.1.0/com/mapbox/services/commons/geojson/feature.html
有人知道怎么做吗?