private void openMap1() { String url = "http://t0.tianditu.gov.cn/vec_c/wmts?tk=15fcda84316f12183782bd4511f18d79"; workspace = new Workspace(); DatasourceConnectionInfo info = new DatasourceConnectionInfo(); info.setServer(url); info.setEngineType(EngineType.OGC); info.setDriver("WMTS"); info.setAlias("tianditu_wmts"); Datasource datasource = workspace.getDatasources().open(info); if (datasource == null) { Toast.makeText(this, "数据源打开失败", Toast.LENGTH_SHORT).show(); return; } }
按照博客里边的把代码换了一下加载不出来天地图二维图
您好,这边看了您的代码,没有看到添加图层呢应该再加上
mapcontrol.getMap().getLayers().add(datasource.getDatasets().get(0),true);
您那边加上看看有没有呢
刚刚运行错项目了 运行的直接奔溃闪退了
错误是这样的:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.map, PID: 26074 java.lang.IllegalArgumentException: dataset 数据集的工作空间应该与Map的工作空间相同。 at com.supermap.mapping.Layers.add(Layers.java:360) at com.example.map.MainActivity.openMap1(MainActivity.java:429) at com.example.map.MainActivity.onClick(MainActivity.java:274) at android.view.View.performClick(View.java:7317) at android.view.View.performClickInternal(View.java:7291) at android.view.View.access$3600(View.java:838) at android.view.View$PerformClick.run(View.java:28247) at android.os.Handler.handleCallback(Handler.java:900) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
这一行报错了mapControl.getMap().getLayers().add(datasource.getDatasets().get(0), true);
如果把这个放到三维场景初始化那一步的话报错信息是这样的:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.map, PID: 26667 java.lang.IllegalArgumentException: dataset 数据集的工作空间应该与Map的工作空间相同。 at com.supermap.mapping.Layers.add(Layers.java:360) at com.example.map.MainActivity.openMap1(MainActivity.java:429) at com.example.map.MainActivity.access$300(MainActivity.java:60) at com.example.map.MainActivity$2.onSuccess(MainActivity.java:262) at com.supermap.realspace.SceneControl$10.handleMessage(SceneControl.java:831) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
错的基本上都差不多 都是先报的mapControl.getMap().getLayers().add(datasource.getDatasets().get(0), true);这一行错误
怎么加载成这种在线地图呢 放大以后显示街道啥的
您好,请问您上面报错提示是因为您加载了多个工作空间吗,您这样想加载本地数据的话,应把数据源关联到同一个工作空间,关于您的第一个问题,天地图不显示,我这边在原有的地图上直接叠加天地图说可以看见的、
DatasourceConnectionInfo dinfo = new DatasourceConnectionInfo(); dinfo.setAlias("TianDiTu12"); dinfo.setEngineType(EngineType.OGC); dinfo.setDriver("WMTS"); String url = "http://t0.tianditu.gov.cn/img_c/wmts?&DPI=96&tk=410199522650980db3dfb843a809a2a4"; dinfo.setServer(url); Datasource d1 = woWorkspace.getDatasources().open(dinfo); mapControl.getMap().getLayers().add(d1.getDatasets().get(0),true);
额之前不是有个问题就是保存我那三维场景到同一个工作空间吗 不是保存不上吗 可能就是因为我用了两个工作空间的关系 就是您那边测试的咋样了
就是怎么可以加载成天地图的那种在线地图啊。放大以后可以看个各个地方的街道什么的
这个是我新建一个Demo 加载的百度地图 放大以后就是这样的
这是我加载天地图的 放大以后就是一个平面的二维图 国家啥的都没有的
您可以加载矢量地图http://t0.tianditu.gov.cn/vec_c/wmts?tk=您的密钥,再添加相应的矢量注记http://t0.tianditu.gov.cn/cva_c/wmts?tk=您的密钥
还是不可以的 是我配置的有什么问题吗
然后我用您发的那个代码 直接报错了
这一行报错:
mapControl.getMap().getLayers().add(d1.getDatasets().get(0), true);
报错信息如下:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.tianditu, PID: 20946 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tianditu/com.example.tianditu.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.supermap.mapping.Map com.supermap.mapping.MapControl.getMap()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4060) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4247) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2613) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.supermap.mapping.Map com.supermap.mapping.MapControl.getMap()' on a null object reference at com.example.tianditu.MainActivity.onCreate(MainActivity.java:80) at android.app.Activity.performCreate(Activity.java:8214) at android.app.Activity.performCreate(Activity.java:8202) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4033) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4247) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2613) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
这是我添加天地图的代码
DatasourceConnectionInfo dinfo = new DatasourceConnectionInfo(); dinfo.setAlias("TianDiTu12"); dinfo.setDriver("WMTS"); String url = "http://t0.tianditu.gov.cn/img_c/wmts?&DPI=96&tk=410199522650980db3dfb843a809a2a4"; dinfo.setEngineType(EngineType.OGC); dinfo.setServer(url); Datasource d1 = woWorkspace.getDatasources().open(dinfo); mapControl.getMap().getLayers().add(d1.getDatasets().get(0),true); mapControl.getMap().refresh();
链接:https://pan.baidu.com/s/11S8TZErUHbHF4nzcEvnhBA 提取码:8754
这是二维点动画的demo其中点为固定点,通过一线程实现,您可以得到三维飞机的图层设置为动态点的坐标
我把您这个代码加到我那里边直接闪退报错了 不加没有事 加了就是闪退报错的
报错 那行是:
Datasource d1 = workspace.getDatasources().open(dinfo);
错误如下:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.map, PID: 29332 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.map/com.example.map.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.supermap.data.Datasources com.supermap.data.Workspace.getDatasources()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4060) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4247) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2613) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.supermap.data.Datasources com.supermap.data.Workspace.getDatasources()' on a null object reference at com.example.map.MainActivity.onCreate(MainActivity.java:202) at android.app.Activity.performCreate(Activity.java:8214) at android.app.Activity.performCreate(Activity.java:8202) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1320) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4033) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4247) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2613) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:219) at android.app.ActivityThread.main(ActivityThread.java:8668) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)