在Android的mapbox中添加一个点列表

时间:2016-09-06 14:19:43

标签: android mapbox

我想在我的Android应用中添加一个点列表到我的mapbox map。我可以在地图上绘制多边形和线条,但是没有功能可以将单个点绘制到地图上。有没有一个解决方案可以在地图集地图上绘制1000多个点?

这样的事情: this 要么 this

我想为Android做这件事并刷新积分并改变他们的位置。

2 个答案:

答案 0 :(得分:1)

您可以使用addMarker()方法(full example)添加单个标记。如果您需要更复杂的视图,还可以创建基于视图的标记(full example)。

答案 1 :(得分:0)

我正在查看文档,看来您可以使用mapbox的注释插件来完成所需的工作! (https://docs.mapbox.com/android/plugins/overview/annotation/#options

假设您已经初始化了依赖项,则需要执行一些步骤来开始使用此注释插件!

文档详细介绍了如何使用此功能,这确实很有帮助,但是我将提供一个使用此功能创建注释的示例。以下所有代码均取自文档,并按说明进行组装。希望这会有所帮助!

首先将此代码段添加到gradle文件中

repositories {
  mavenCentral()
}

dependencies {
  implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.8.0'
}

接下来,将此代码添加到创建了Mapbox的片段/活动中。

    @Override
public void onMapReady(@NonNull final MapboxMap mapboxMap) {
    mapboxMap.setStyle(Style.MAPBOX_STREETS, new Style.OnStyleLoaded() {
      @Override
      public void onStyleLoaded(@NonNull Style style) {

        // Use a layer manager here
        // create symbol manager object
        SymbolManager symbolManager = new SymbolManager(mapView, mapboxMap, style);

        // add click listeners if desired
        symbolManager.addClickListener(symbol ->

        );

        symbolManager.addLongClickListener(symbol -> {

        });

        // set non-data-driven properties, such as:
        symbolManager.setIconAllowOverlap(true);
        symbolManager.setIconTranslate(new Float[]{-4f,5f});
        symbolManager.setIconRotationAlignment(ICON_ROTATION_ALIGNMENT_VIEWPORT);

        symbolManager.setIconAllowOverlap(true);
        symbolManager.setIconIgnorePlacement(true);

        // Add symbol at specified lat/lon
        Symbol symbol = symbolManager.create(new SymbolOptions()
            .withLatLng(new LatLng(60.169091, 24.939876))
            .withIconImage(ICON_ID)
            .withIconSize(2.0f));

       }
    });
}