首页 / 浏览问题 / 移动GIS / 问题详情
谷歌卫星叠加REST
3EXP 2019年05月07日
//google卫星
datainfo.setServer("http://maps.google.com/");
datainfo.setEngineType(EngineType.GoogleMaps);
datainfo.setWebCoordinate("EPSG:4326");
datainfo.setAlias("GoogleMap");
ds=m_workspace.getDatasources().open(datainfo);
if (ds!=null){
    m_mapcontrol.getMap().getLayers().add(ds.getDatasets().get(1),false);
    m_mapcontrol.getMap().setScale(1.0/60000);
    m_mapcontrol.getMap().refresh();
}
else
{
    T.showShort(context,"打开地图失败");
}

//行政区域

dsInfo.setServer(url);
dsInfo.setEngineType(EngineType.Rest);
datainfo.setWebCoordinate("EPSG:4326");
dsInfo.setAlias("JX");
if (m_workspace.getDatasources() != null) {
    dsiser = m_workspace.getDatasources().open(dsInfo);
    if (dsiser != null) {
        m_mapcontrol.getMap().getLayers().add(dsiser.getDatasets().get(0), true);
        m_mapcontrol.getMap().setScale(1.0 / 300000);
        m_mapcontrol.getMap().refresh();
    } else {
        T.showShort(context, "打开地图失败");
    }
}

这两个分别打开可以成功,但是同时打开叠加直接不报任何错误闪退,是叠加方式不对吗?还是坐标系设置不对?有没有直接的例子给予帮助,要android平台的。

1个回答

你好,在地图叠加这一块数据源的坐标系尽量是一致的来进行叠加。地图原始是有坐标系的,代码中可以不用设置web数据坐标系。然后在叠加的时候调试一下闪退是在哪句代码闪退的
9,137EXP 2019年05月08日

叠加第二层图层的时候

 m_mapcontrol.getMap().getLayers().add(dsiser.getDatasets().get(0), true);就退出了
看一下有没有报错日志,你的数据的坐标系是什么?如果不一致尽量叠加坐标系一致的数据,不要采用动态投影的方式。你也可以试试将数据源的打开顺序交换一下。
退出的时候弹出了一个warring

Failed to dispatch window animation state change.
    android.os.DeadObjectException

 at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(Binder.java:511)
        at android.view.IWindow$Stub$Proxy.onAnimationStopped(IWindow.java:548)
        at com.android.server.wm.WindowAnimator.updateWindowsLocked(WindowAnimator.java:324)
        at com.android.server.wm.WindowAnimator.animateLocked(WindowAnimator.java:737)
        at com.android.server.wm.WindowAnimator.access$000(WindowAnimator.java:63)
        at com.android.server.wm.WindowAnimator$1.doFrame(WindowAnimator.java:139)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:909)
        at android.view.Choreographer.doCallbacks(Choreographer.java:713)
        at android.view.Choreographer.doFrame(Choreographer.java:645)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
        at android.os.Handler.handleCallback(Handler.java:815)
        at android.os.Handler.dispatchMessage(Handler.java:104)
        at android.os.Looper.loop(Looper.java:207)
        at android.os.HandlerThread.run(HandlerThread.java:61)
        at com.android.server.ServiceThread.run(ServiceThread.java:46)

REST用的是GCS_WGS_1984

Google我百度的是EPSG3857,这块其实不是很清楚。
试试先加REST服务再加Google的,如果你们的数据可以将坐标系改为3857可以坐标转换后再发布服务叠加

尝试两个REST可以叠加,怎么统一两个坐标系呢?另外设置图层透明用

setBackgroundStyle无效啊。
你可以在桌面中将你的数据转换坐标系再发布服务。设置透明可以使用layer.setAdditionalSetting方法,参考一下帮助文档
...