Android Mapbox - 从GeoJson文件中进行过滤,只显示具有特定属性的点
创始人
2024-09-30 11:00:35
0

以下是一个使用Mapbox Android SDK来从GeoJson文件中过滤并只显示具有特定属性的点的示例代码:

  1. 首先,确保您已经在您的项目中添加了Mapbox Android SDK的依赖项。可以在build.gradle文件中添加以下行来添加依赖项:
implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.6.1'
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.9.0'
implementation 'com.mapbox.mapboxsdk:mapbox-android-plugin-annotation-v9:0.9.0'
  1. 创建一个Mapbox地图的布局文件(例如,activity_main.xml):

  1. 在您的活动(例如,MainActivity.java)中,设置Mapbox地图并加载GeoJson文件:
import com.mapbox.geojson.Feature;
import com.mapbox.geojson.FeatureCollection;
import com.mapbox.geojson.Point;
import com.mapbox.mapboxsdk.Mapbox;
import com.mapbox.mapboxsdk.maps.MapView;
import com.mapbox.mapboxsdk.maps.MapboxMap;
import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
import com.mapbox.mapboxsdk.plugins.annotation.Circle;
import com.mapbox.mapboxsdk.plugins.annotation.CircleManager;
import com.mapbox.mapboxsdk.plugins.annotation.CircleOptions;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private MapView mapView;
    private CircleManager circleManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Mapbox.getInstance(this, "YOUR_MAPBOX_ACCESS_TOKEN");
        setContentView(R.layout.activity_main);

        mapView = findViewById(R.id.mapView);
        mapView.onCreate(savedInstanceState);
        mapView.getMapAsync(new OnMapReadyCallback() {
            @Override
            public void onMapReady(MapboxMap mapboxMap) {
                circleManager = new CircleManager(mapView, mapboxMap, mapboxMap.getStyle());
                loadGeoJsonData();
            }
        });
    }

    private void loadGeoJsonData() {
        try {
            InputStream inputStream = getAssets().open("your_geojson_file.geojson");
            FeatureCollection featureCollection = FeatureCollection.fromJson(inputStream);
            List filteredFeatures = new ArrayList<>();

            // 过滤具有特定属性的点
            for (Feature feature : featureCollection.features()) {
                if (feature.properties() != null && feature.properties().has("your_attribute")) {
                    // 添加具有特定属性的点到过滤后的列表中
                    filteredFeatures.add(feature);
                }
            }

            // 在地图上显示过滤后的点
            for (Feature filteredFeature : filteredFeatures) {
                Point point = (Point) filteredFeature.geometry();
                CircleOptions circleOptions = new CircleOptions()
                        .withLatLng(new LatLng(point.latitude(), point.longitude()))
                        .withCircleColor(ColorUtils.colorToRgbaString(Color.BLUE))
                        .withCircleRadius(5f);
                circleManager.create(circleOptions);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @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 onLowMemory() {
        super.onLowMemory();
        mapView.onLowMemory();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mapView.onDestroy();
    }
}

请确保将上述代码中的YOUR_MAPBOX_ACCESS_TOKEN替换为您自己的Mapbox访问令牌,并将your_geojson_file.geojson替换为您自己的GeoJson文件名。此外,您可以根据需要修改过滤条件和在地图上显示点的样式。

希望对您有所帮助

相关内容

热门资讯

透视透视!红龙poker脚本,... 透视透视!红龙poker脚本,wejoker辅助软件价格(详细辅助线上教程)1、操作简单,无需注册,...
wepoke的确有挂!智星德州... wepoke的确有挂!智星德州菠萝在哪下载(透视)都是是有挂(详细辅助AA德州教程)1、很好的工具软...
透视了解!wpk透视辅助靠谱吗... 透视了解!wpk透视辅助靠谱吗,wepoker透视脚本免费app(详细辅助解密教程);1、首先打开w...
德扑ai智能!nzt德州辅助(... 德扑ai智能!nzt德州辅助(透视)从前是真的有挂(详细辅助细节揭秘)1、构建自己的微扑克辅助插件;...
透视软件!aapoker辅助器... 透视软件!aapoker辅助器是真的吗,智星菠萝辅助(详细辅助安装教程)1、下载好aapoker辅助...
aapoker辅助工具存在!微... aapoker辅助工具存在!微扑克大厅机器人(透视)原先有挂(详细辅助软件教程);致您一封信;亲爱a...
透视了解!智星德州菠萝透视插件... 透视了解!智星德州菠萝透视插件工具,有没有人wepoker(详细辅助必备教程)智星德州菠萝透视插件工...
aapoker辅助工具存在!p... aapoker辅助工具存在!pokermastersteam外挂(透视)果然是有挂(详细辅助新202...
透视智能ai!wpk辅助器是真... 透视智能ai!wpk辅助器是真的吗,hhpoker有作弊的吗(详细辅助2025版教程)进入游戏-大厅...
德州之星有辅助挂!德扑之星怎么... 您好,德州之星有辅助挂这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩家在...