Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在arcgis中添加用户纬度和经度值。?_Java_Arcgis - Fatal编程技术网

Java 如何在arcgis中添加用户纬度和经度值。?

Java 如何在arcgis中添加用户纬度和经度值。?,java,arcgis,Java,Arcgis,我正在我的项目中使用ArcGIS Runtime SDK for Java。我需要为GPS跟踪添加纬度/经度值。我找不到执行此操作的解决方案。有一些示例代码可以执行此操作,但我认为它们使用的是CSV文件作为值 我找不到添加CSV文件路径或添加CSV文件的方法 示例代码: private static final String FSP = System.getProperty("file.separator"); private String getPathSampleData() {

我正在我的项目中使用ArcGIS Runtime SDK for Java。我需要为GPS跟踪添加纬度/经度值。我找不到执行此操作的解决方案。有一些示例代码可以执行此操作,但我认为它们使用的是CSV文件作为值

我找不到添加CSV文件路径或添加CSV文件的方法

示例代码:

private static final String FSP = System.getProperty("file.separator");

private String getPathSampleData() {
    String dataPath = null;
    String javaPath = ArcGISRuntime.getInstallDirectory();
    if (javaPath != null) {
        if (!(javaPath.endsWith("/") || javaPath.endsWith("\\"))) {
            javaPath += FSP;
        }
        dataPath = javaPath + "sdk" + FSP + "samples" + FSP + "data" + FSP;
    }
    File dataFile = new File(dataPath);
    if (!dataFile.exists()) { 
        dataPath = ".." + FSP + "data" + FSP;
    }
    return dataPath;
}

有谁能帮我解决我的问题吗?

您提到了GPS和CSV,我将解释如何在ArcGIS运行时使用这两种工具

全球定位系统 使用该类在地图上显示位置流。有几个选项可用于使用
GPSLayer

  • 使用连接到串行端口(或虚拟串行端口)GPS()
  • 使用可使用GPS点(,)的NMEA文件
  • 实现该接口以执行除真实GPS或NMEA文件(如CSV文件)以外的操作
  • CSV 如果您真正想要的是在地图上显示CSV,我可以想到两个选项:

  • 自己解析CSV并将结果放入()中。(Java中有1001种解析CSV的方法;如果我在编写代码,
    BufferedReader
    StringTokenizer
    将是我的朋友。)
  • 使用该类。没有任何示例,也没有很好的文档记录,因为它似乎是为内部使用而编写的,用于显示存储在web地图中的CSV层。但您可以将其与CSV文件一起使用,如下所示:

    //map is of type JMap
    map.addMapEventListener(new MapEventListenerAdapter() {
        @Override
        public void mapReady(MapEvent event) {
            String layerDef = "{   \"geometryType\": \"esriGeometryPoint\",   \"type\": \"Feature Layer\",   \"typeIdField\": \"\",   \"drawingInfo\": {     \"renderer\": {       \"type\": \"simple\",       \"symbol\": {         \"type\": \"esriSMS\",         \"style\": \"esriSMSCircle\",         \"color\": [200, 40, 0, 255],         \"size\": 15,         \"angle\": 0,         \"xoffset\": 0,         \"yoffset\": 0       }     },     \"fixedSymbols\": true   },   \"fields\": [     {       \"name\": \"X\",       \"alias\": \"X\",       \"type\": \"esriFieldTypeDouble\",       \"editable\": true,       \"nullable\": true,       \"domain\": null     },     {       \"name\": \"Y\",       \"alias\": \"Y\",       \"type\": \"esriFieldTypeDouble\",       \"editable\": true,       \"nullable\": true,       \"domain\": null     }   ],   \"name\": \"My CSV Layer\" }";
            CSVLayer.CSVConfig csvConfig = new CSVLayer.CSVConfig();
            csvConfig.url = new File("/path/to/csv-file.csv").toURI().toString();
            csvConfig.columnDelimiter = ",";
            csvConfig.longitudeField = "X";
            csvConfig.latitudeField = "Y";
            try {
                final CSVLayer csvLayer = new CSVLayer(layerDef, csvConfig);
                map.getLayers().add(csvLayer);
            } catch (Exception ex) {
                //Handle the exception
            }
        }
    });
    
  • 不幸的是,为了使用
    CSVLayer
    ,您确实需要这个JSON字符串。我使JSON字符串尽可能简单。如果经度和纬度的字段名不是
    X
    Y
    ,则需要对其进行调整。您可以看到和一个更详细的示例(,)


    在我看来,选项2所需的JSON字符串使选项1成为更好的选择。解析CSV很容易;管理JSON字符串更难。

    您需要提供更多信息:问题到底是什么,您尝试了什么,示例代码不令人满意的原因等等您发布的示例代码是ArcGIS运行时SDK示例中返回SDK示例数据路径的方法。它不会帮助您将CSV添加到地图。