java - 在mapbox android中将数字添加到标记
问题描述
我试图弄清楚如何在mapbox中以编程方式向标记添加数字以获得下图的结果
这是显示一些标记的地图代码
public class DepartMissionFragment extends Fragment {
private MapView mapView;
private static final String TAG = "DirectionsActivity";
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
Mapbox.getInstance(requireActivity(), getString(R.string.access_token));
View view = inflater.inflate(R.layout.fragment_mission_depart, container, false);
mapView = view.findViewById(R.id.mapView20);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(@NonNull MapboxMap mapboxMap) {
mapboxMap.addMarker(new MarkerOptions()
.position(new LatLng(33.589886, -7.603869))
.title("marker one"));
// It is possible to use .setIcon() to get a custom icon from ressources
mapboxMap.addMarker(new MarkerOptions()
.position(new LatLng(33.589790, -7.603989))
.title("marker two"));
mapboxMap.addMarker(new MarkerOptions()
.position(new LatLng(33.589190, -7.603089))
.title("marker three"));
mapboxMap.addMarker(new MarkerOptions()
.position(new LatLng(33.588790, -7.603289))
.title("etc.."));
mapboxMap.addMarker(new MarkerOptions()
.position(new LatLng(33.580790, -7.603989))
.title("etc...."));
mapboxMap.setStyle(getString(R.string.navigation_guidance_day), new Style.OnStyleLoaded() {
@Override
public void onStyleLoaded(@NonNull Style style) {
}
});
}
});
return view;
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
}
@Override
public void onStart() {
super.onStart();
mapView.onStart();
}
@Override
public void onResume() {
super.onResume();
mapView.onResume();
}
@Override
public void onPause() {
super.onPause();
mapView.onPause();
}
@Override
public void onStop() {
super.onStop();
mapView.onStop();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
@Override
public void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
mapView.onLowMemory();
}
}
我正在寻找一种为标记提供数字的方法,对我来说正确的方法是从 drawable 添加自定义标记。
欢迎任何其他方法。
解决方案
您可以使用符号层从存储为 GeoJSON 要素的坐标中添加图标,而不是使用该MapboxMap#addMarker
方法显示标记并依赖于可绘制资源,如适用于 Android 的 Mapbox Maps SDK 的此示例所示。
将每个Feature
代表坐标添加到GeoJSON对象时,您可以向每个对象添加一个属性,其中包含要在该坐标的标记上显示的数字Feature
。properties
然后,除了示例中所示的iconImage
添加之外SymbolLayer#setProperties
,您还可textField
以为每个由添加到 GeoJSON 的属性填充的符号添加一个。此符号图层聚类示例显示了应用于聚类用例的类似工作流。集群示例和您的实现之间的区别主要在于,您将从为坐标指定的 GeoJSON 属性中获取它,而不是从集群计数中获取要显示的数字。
推荐阅读
- powershell - 如何在 powershell 中检测 Linux 或 macOS 或 Windows?
- ios - 显示飞溅视图在动画后显示空白屏幕
- laravel - 即使通知值也需要下拉菜单 - Voyager Laravel
- android - 在运行时隐藏 mapbox POI
- python - Microsoft Visual Studio Community 2019 16.8.1 Immediate Windows 对非原始数据结构的输出现在太多了
- java - Dropdown android - 仅在用户更改其值时调用 setOnItemSelectedListener
- python - 在 plotly 中添加索引作为下拉菜单
- c++ - 通过迭代基类向量在派生类中实现的调用方法
- javascript - 如何使用 vanilla JS 实现可维护的反应式 UI
- java - spring boot 2.4.0 版本中 CORS 策略的变化