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文件名。此外,您可以根据需要修改过滤条件和在地图上显示点的样式。

希望对您有所帮助

相关内容

热门资讯

七分钟带你明白!微信蜀山四川修... 较多好评“微乐万能挂官网”开挂(透视)辅助教程 了解更多开挂安装加(136704302)微信号是一款...
玩家必看分享"红中血... 玩家必看分享"红中血流攻略"开挂(透视)辅助安装(果然确实有挂的)-哔哩哔哩;1、很好的红中血流攻略...
第一分钟带你了解!邯郸胡乐挂辅... 第一分钟带你了解!邯郸胡乐挂辅助(透视挂)攻略讲解外挂开挂辅助神器(其实是有挂的) 了解更多开挂安装...
十分钟带你辅助!哥哥打大a辅助... 十分钟带你辅助!哥哥打大a辅助工具,心悦填大坑辅助,细节方法(发现有挂)-哔哩哔哩 了解更多开挂安装...
玩家攻略推荐"途游辅... 《玩家攻略推荐"途游辅助软件"开挂(透视)辅助软件(其实是有挂)-哔哩哔哩》 途游辅助软件软件透视开...
五分钟带你了解!来来拼十辅助(... 五分钟带你了解!来来拼十辅助(辅助挂)一分钟快速了解外挂开挂辅助脚本(原来是有挂)来来拼十辅助ai黑...
两分钟带你科普!传送屋激k看底... 传送屋激k看底牌辅助软件是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可...
一起来讨论"新畅游互... 一起来讨论"新畅游互娱辅助app"开挂(透视)辅助安装(其实确实是有挂的)-哔哩哔哩;1、不需要AI...
第一分钟带你了解!大唐山西辅助... 第一分钟带你了解!大唐山西辅助软件苹果版(透视挂)一分钟揭秘外挂开挂辅助神器(一贯有挂);无需打开直...
九分钟带你讲解!三加一免费辅助... 您好:这款小程序牵手跑的辅助游戏是可以开挂的,确实是有挂的,很多玩家在这款小程序牵手跑的辅助游戏中打...