【问题标题】:Android ESRI SDK map could not update the active symbolAndroid ESRI SDK 地图无法更新活动符号
【发布时间】:2013-11-17 13:06:58
【问题描述】:

我正在使用带有新加坡 OneMap 服务器的 ESRI Android SDK 作为底图。 当我启动地图的定位服务时,由于无效的SpatialReference,精度圈导致异常。

Could not update the active symbol
java.lang.RuntimeException: Invalid SpatialReference.
at com.esri.core.geometry.SpatialReference.nativeGetUnit(Native Method)
at com.esri.core.geometry.SpatialReference.getUnit(Unknown Source)
at com.esri.android.map.LocationService$a.k(Unknown Source)
at com.esri.android.map.LocationService$a$a.onLocationChanged(Unknown Source)

我的代码如下

map = (MapView) view.findViewById(R.id.map);

basemap = new ArcGISTiledMapServiceLayer
            ("http://e1.onemap.sg/arcgis/rest/services/SM128/MapServer");

map.addLayer(basemap);

map.setOnStatusChangedListener(new OnStatusChangedListener()
{

    private static final long serialVersionUID = 1L;

    @Override
    public void onStatusChanged(Object source, STATUS status) {
        if (OnStatusChangedListener.STATUS.INITIALIZED == 
                            status && source == map) 
         { 

            //Start location service
            LocationService ls = map.getLocationService();

            ls.setLocationListener(new LocationListener(){

                 @Override
                 public void onLocationChanged(Location location) {
                                 // Do something                            

                            }

                 @Override
                 public void onProviderDisabled(String provider) {
                                // TODO Auto-generated method stub

                            }

                 @Override
                 public void onProviderEnabled(String provider) {
                                // TODO Auto-generated method stub

                            }

                 @Override
                 public void onStatusChanged(String provider,
                                    int status, Bundle extras) {
                                // TODO Auto-generated method stub

                            }

                   });

                   ls.start();
        }

}

禁用精度圈时不会出现此问题,但在我的情况下,我需要启用它。

任何帮助将不胜感激。

【问题讨论】:

    标签: android map arcgis esri


    【解决方案1】:

    看起来在使用自定义空间参考时 SpatialReference.getUnit 可能存在问题,就像 your map service 所做的那样。您可能需要将其报告给 Esri 支持人员,因为这看起来像是他们需要修复的问题。

    同时,有两种可能的解决方法:

    • 在添加 ArcGISTiledMapServiceLayer 之前,添加空间参考为 3414 的 GraphicsLayer。这应该使 MapView 的空间参考为 3414,以便 LocationService 可以启动。

    • 在众所周知的空间参考中发布您的服务。看起来您正在尝试使用 3414,因此可以在您发布的地图文档中使用它,而不是使用您现在使用的自定义 SR。

    【讨论】:

    • 感谢您的回答,让我找到了问题的根源。但是我不拥有地图服务,因此我无法更改它的空间参考。
    • 尝试添加具有空间参考 3414 的 GraphicsLayer。请参阅编辑后的答案。
    【解决方案2】:

    地图中的所有几何图形必须位于同一坐标系 (SpatialReference) 中。尝试将位置坐标投影(使用 GeometryEngine 类)到与底图相同的空间参考。 在此处检查其中一个执行此操作的 cmets Convert latitude and longitude into esri arcGIS MapPoint

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 2016-03-15
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 2014-12-23
      • 1970-01-01
      相关资源
      最近更新 更多