IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> arcgis for android 捕捉顶点 -> 正文阅读

[移动开发]arcgis for android 捕捉顶点

import android.graphics.Color;
import android.os.Bundle;
import android.view.MotionEvent;

import androidx.appcompat.app.AppCompatActivity;

import com.esri.arcgisruntime.geometry.GeometryEngine;
import com.esri.arcgisruntime.geometry.Point;
import com.esri.arcgisruntime.geometry.PointCollection;
import com.esri.arcgisruntime.geometry.Polygon;
import com.esri.arcgisruntime.geometry.ProximityResult;
import com.esri.arcgisruntime.geometry.SpatialReferences;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener;
import com.esri.arcgisruntime.mapping.view.Graphic;
import com.esri.arcgisruntime.mapping.view.GraphicsOverlay;
import com.esri.arcgisruntime.mapping.view.MapView;
import com.esri.arcgisruntime.symbology.SimpleFillSymbol;
import com.esri.arcgisruntime.symbology.SimpleLineSymbol;
import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol;

import java.util.Arrays;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {
    @BindView(R.id.mapView)
    MapView mapView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main5);
        ButterKnife.bind(this);

        PointCollection polygonPoints = new PointCollection(SpatialReferences.getWebMercator());
        polygonPoints.addAll(Arrays.asList(
                new Point(-5991501.677830, 5599295.131468),
                new Point(-6928550.398185, 2087936.739807),
                new Point(-3149463.800709, 1840803.011362),
                new Point(-1563689.043184, 3714900.452072),
                new Point(-3180355.516764, 5619889.608838)
        ));

        Polygon polygon = new Polygon(polygonPoints);
        SimpleLineSymbol polygonOutlineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.GREEN, 2f);
        SimpleFillSymbol polygonFillSymbol =
                new SimpleFillSymbol(SimpleFillSymbol.Style.FORWARD_DIAGONAL, Color.GREEN, polygonOutlineSymbol);
        Graphic polygonGraphic = new Graphic(polygon, polygonFillSymbol);

        // create graphics with symbols for tapped location, nearest coordinate, and nearest vertex
        Graphic tappedLocationGraphic = new Graphic();
        tappedLocationGraphic.setSymbol(new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.X, Color.MAGENTA, 15f));
        Graphic nearestCoordinateGraphic = new Graphic();
        nearestCoordinateGraphic.setSymbol(new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.DIAMOND, Color.RED, 10f));
        Graphic nearestVertexGraphic = new Graphic();
        nearestVertexGraphic.setSymbol(new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.BLUE, 15f));

        // create a graphics overlay to show the polygon, tapped location, and nearest vertex/coordinate
        GraphicsOverlay graphicsOverlay = new GraphicsOverlay();
        graphicsOverlay.getGraphics().addAll(Arrays.asList(
                polygonGraphic,
                tappedLocationGraphic,
                nearestCoordinateGraphic,
                nearestVertexGraphic
        ));

        // create a map with a basemap and add it to the map view
        ArcGISMap map = new ArcGISMap(Basemap.createTopographic());
        mapView.setMap(map);

        // add the graphics overlay to the map view
        mapView.getGraphicsOverlays().add(graphicsOverlay);

        // zoom to the polygon's extent
        mapView.setViewpointGeometryAsync(polygon.getExtent(), 100.0);

        // get the nearest vertex on tap
        mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(MainActivity5.this, mapView){
            @Override
            public boolean onSingleTapConfirmed(MotionEvent e) {
                // create a screen point from where the user tapped
                android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));
                // create a map point from the screen point
                Point mapPoint = mapView.screenToLocation(screenPoint);
                // the map point should be normalized to the central meridian when wrapping around a map,
                // so its value stays within the coordinate system of the map view
                Point normalizedMapPoint = (Point) GeometryEngine.normalizeCentralMeridian(mapPoint);
                // show where the user clicked
                tappedLocationGraphic.setGeometry(normalizedMapPoint);

                // use the geometry engine to get the nearest vertex
                ProximityResult nearestVertexResult = GeometryEngine.nearestVertex(polygon, normalizedMapPoint);
                // set the nearest vertex graphic's geometry to the nearest vertex
                nearestVertexGraphic.setGeometry(nearestVertexResult.getCoordinate());
                // use the geometry engine to get the nearest coordinate
                ProximityResult nearestCoordinateResult =
                        GeometryEngine.nearestCoordinate(polygon, normalizedMapPoint);
                // set the nearest coordinate graphic's geometry to the nearest coordinate
                nearestCoordinateGraphic.setGeometry(nearestCoordinateResult.getCoordinate());

                // show the distances to the nearest vertex and nearest coordinate
//                distanceLayout.visibility = VISIBLE
//                val vertexDistance = (nearestVertexResult.distance / 1000.0).toInt()
//                val coordinateDistance = (nearestCoordinateResult.distance / 1000.0).toInt()
//                vertexDistanceTextView.text = getString(R.string.nearest_vertex, vertexDistance)
//                coordinateDistanceTextView.text = getString(R.string.nearest_coordinate, coordinateDistance)
                return true;
            }
        });
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.esri.arcgisruntime.mapping.view.MapView
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-31 15:33:43  更:2021-08-31 15:35:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 -2025/5/3 22:28:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码