无法在地图上显示路线ArcGIS Android

Linux Holic

我正在开发一个计算两点之间路线的应用程序。下面给出的代码可以计算两点之间的路线。但是我无法以图形方式在地图上显示它。

代码:

private final String routeTaskURL = "http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Network/USA/NAServer/Route";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mMapView = (MapView) findViewById(R.id.map);
    addGraphicLayers();
    mMapView.enableWrapAround(true);
    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                UserCredentials userCredentials = new UserCredentials();
                userCredentials.setUserToken(token, clientID);
                RouteTask routeTask = RouteTask.createOnlineRouteTask(routeTaskURL, userCredentials);
                RouteParameters routeParameters = routeTask.retrieveDefaultRouteTaskParameters();
                NAFeaturesAsFeature naFeatures = new NAFeaturesAsFeature();

                Point startPoint = new Point(-119.866896, 36.793653);
                Point stopPoint = new Point(-119.853345, 36.795488);

                StopGraphic startPnt = new StopGraphic(startPoint);
                StopGraphic stopPnt = new StopGraphic(stopPoint);

                naFeatures.setFeatures(new Graphic[] {startPnt, stopPnt});
                routeParameters.setStops(naFeatures);

                RouteResult mResults = routeTask.solve(routeParameters);
                List<Route> routes = mResults.getRoutes();
                System.out.println(mResults.getRoutes());

                Route mRoute = routes.get(0);
                Geometry geometry = mRoute.getRouteGraphic().getGeometry();
                Graphic symbolGraphic = new Graphic(geometry, new SimpleLineSymbol(Color.BLUE, 10));
                mLocationLayer.addGraphic(symbolGraphic);
                System.out.println(mResults.getStops());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }).start();
}

void addGraphicLayers() {
    // Add location layer
    if (mLocationLayer == null) {
        mLocationLayer = new GraphicsLayer();
    }
    mMapView.addLayer(mLocationLayer);

    // Add the route graphic layer
    if (mRouteLayer == null) {
        mRouteLayer = new GraphicsLayer();
    }
    mMapView.addLayer(mRouteLayer);
}

@Override
protected void onPause() {
    super.onPause();
    mMapView.pause();
}

@Override
protected void onResume() {
    super.onResume();
    mMapView.unpause();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    // Get the basemap switching menu items.
    mStreetsMenuItem = menu.getItem(0);
    mTopoMenuItem = menu.getItem(1);
    mGrayMenuItem = menu.getItem(2);
    mOceansMenuItem = menu.getItem(3);

    // Also set the topo basemap menu item to be checked, as this is the default.
    mTopoMenuItem.setChecked(true);

    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle menu item selection.
    switch (item.getItemId()) {
        case R.id.World_Street_Map:
            mMapView.setMapOptions(mStreetsBasemap);
            mStreetsMenuItem.setChecked(true);
            return true;
        case R.id.World_Topo:
            mMapView.setMapOptions(mTopoBasemap);
            mTopoMenuItem.setChecked(true);
            return true;
        case R.id.Gray:
            mMapView.setMapOptions(mGrayBasemap);
            mGrayMenuItem.setChecked(true);
            return true;
        case R.id.Ocean_Basemap:
            mMapView.setMapOptions(mOceansBasemap);
            mOceansMenuItem.setChecked(true);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

注意:mLocationLayer和mRouteLayer都在第一步中声明。

加里·谢泼德

您需要进行两项更改。首先,在添加图形图层时,可能会或可能不会添加底图图层。 (扰流警报:它没有。它是异步的,因此从技术上讲它可以以任何一种方式进行,但是显然,内存图形层的创建比基于Web服务的层的创建更快。)添加的最后一层在最顶层,因此您的底图图层可能(剧透警报:将)位于图形图层的顶部,并将其隐藏。为确保在底图之后添加图形图层,请添加OnStatusChangedListener

mMapView = (MapView) findViewById(R.id.map);
mMapView.setOnStatusChangedListener(new OnStatusChangedListener() {
    @Override
    public void onStatusChanged(Object o, STATUS status) {
        if (STATUS.INITIALIZED.equals(status)) {
            addGraphicLayers();
            mMapView.enableWrapAround(true);
            new Thread(new Runnable() {
                //Your thread code as you wrote it
            }).start();
        }
    }
});

其次,路线的几何参考与地图的参考有所不同。路由服务的默认输出空间参考是WGS 1984,又名4326,又名纬度和经度。但是,ArcGIS Online底图服务(例如World Topo Map)位于Web Mercator中,又名3857或102100。有两种解决方法。一种方法是用来GeometryEngine投影从4326到3857的几何。但是更好的方法是告诉路线服务您想要哪个空间参考。这是通过在获取RouteParameters对象之后添加以下代码行来完成的

routeParameters.setOutSpatialReference(mMapView.getSpatialReference());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

KML 点无法在 Android 谷歌地图上显示

来自分类Dev

在Android的Google地图上显示textview

来自分类Dev

Android在esri地图上显示多点

来自分类Dev

Android在esri地图上显示多点

来自分类Dev

Android-在Google地图上显示方向

来自分类Dev

在Android Mobile中查找地图的路线显示

来自分类Dev

无法在Android中的地图上添加标记

来自分类Dev

如何在Android的Google地图上显示涟漪动画?

来自分类Dev

搜索位置(城市名称),在地图上显示(Android)

来自分类Dev

如何在Android的Google地图上显示可用的Wifi热点?

来自分类Dev

如何在Android Studio的Google地图上显示图像

来自分类Dev

Android:如何在地图上绘制从源到目的地的多条路线?

来自分类Dev

Android:如何在地图上绘制从源到目的地的多条路线?

来自分类Dev

如何使用JavaScript API在Arcgis地图上绘制路线?

来自分类Dev

Google地图在Android中无法突然显示

来自分类Dev

Google地图显示但未在Android中加载地图和路线

来自分类Dev

无法使AdMob在地图上显示

来自分类Dev

无法创建从一个点到另一个ArcGIS Android的路线

来自分类Dev

如何在Android中的离线地图Arcgis中显示经度和纬度点?

来自分类Dev

Android-Google Map-如何在地图上显示多个标记?

来自分类Dev

如何在Android中的谷歌地图上的圆形图像上显示图像

来自分类Dev

在给定半径内在地图上显示标记(Xamarin.Android)

来自分类Dev

如何在Android棉花糖上的Google地图上显示当前位置?

来自分类Dev

如何在地图上显示图钉的纬度和经度(Android Studio)

来自分类Dev

在 Android 平台的谷歌地图上始终显示标记标签和默认图钉图标

来自分类Dev

如何使用 GeoFirestore (Java/Android) 在谷歌地图上显示多个标记?

来自分类Dev

MKDirections未在iOS中的地图上显示路线

来自分类Dev

在iOS 7地图上显示路线:addOverlay无效

来自分类Dev

Mapbox-获取准确的道路路线以显示在地图上

Related 相关文章

  1. 1

    KML 点无法在 Android 谷歌地图上显示

  2. 2

    在Android的Google地图上显示textview

  3. 3

    Android在esri地图上显示多点

  4. 4

    Android在esri地图上显示多点

  5. 5

    Android-在Google地图上显示方向

  6. 6

    在Android Mobile中查找地图的路线显示

  7. 7

    无法在Android中的地图上添加标记

  8. 8

    如何在Android的Google地图上显示涟漪动画?

  9. 9

    搜索位置(城市名称),在地图上显示(Android)

  10. 10

    如何在Android的Google地图上显示可用的Wifi热点?

  11. 11

    如何在Android Studio的Google地图上显示图像

  12. 12

    Android:如何在地图上绘制从源到目的地的多条路线?

  13. 13

    Android:如何在地图上绘制从源到目的地的多条路线?

  14. 14

    如何使用JavaScript API在Arcgis地图上绘制路线?

  15. 15

    Google地图在Android中无法突然显示

  16. 16

    Google地图显示但未在Android中加载地图和路线

  17. 17

    无法使AdMob在地图上显示

  18. 18

    无法创建从一个点到另一个ArcGIS Android的路线

  19. 19

    如何在Android中的离线地图Arcgis中显示经度和纬度点?

  20. 20

    Android-Google Map-如何在地图上显示多个标记?

  21. 21

    如何在Android中的谷歌地图上的圆形图像上显示图像

  22. 22

    在给定半径内在地图上显示标记(Xamarin.Android)

  23. 23

    如何在Android棉花糖上的Google地图上显示当前位置?

  24. 24

    如何在地图上显示图钉的纬度和经度(Android Studio)

  25. 25

    在 Android 平台的谷歌地图上始终显示标记标签和默认图钉图标

  26. 26

    如何使用 GeoFirestore (Java/Android) 在谷歌地图上显示多个标记?

  27. 27

    MKDirections未在iOS中的地图上显示路线

  28. 28

    在iOS 7地图上显示路线:addOverlay无效

  29. 29

    Mapbox-获取准确的道路路线以显示在地图上

热门标签

归档