我正在尝试运行mapsforge项目中最简单的地图查看器示例:一个非常基本的Android应用程序示例—带有Android Studio的GitHub
在应用程序运行期间,我遇到了一个问题-地图没有呈现:http://i.stack.imgur.com/bVNUZ.jpg
我的logcat有一条消息:
01-08 15:46:45.273 32331-32359/com.maptests.mapsforgetest E/DatabaseRenderer: Error to retrieve render theme from future
java.util.concurrent.ExecutionException: java.lang.NoClassDefFoundError: com.caverock.androidsvg.SVG
at java.util.concurrent.FutureTask.report(FutureTask.java:93)
at java.util.concurrent.FutureTask.get(FutureTask.java:163)
at org.mapsforge.map.layer.renderer.DatabaseRenderer.executeJob(DatabaseRenderer.java:124)
at org.mapsforge.map.layer.renderer.MapWorkerPool$MapWorker.run(MapWorkerPool.java:121)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NoClassDefFoundError: com.caverock.androidsvg.SVG
at org.mapsforge.map.android.graphics.AndroidSvgBitmap.getResourceBitmap(AndroidSvgBitmap.java:49)
at org.mapsforge.map.android.graphics.AndroidSvgBitmap.<init>(AndroidSvgBitmap.java:107)
at org.mapsforge.map.android.graphics.AndroidGraphicFactory.renderSvg(AndroidGraphicFactory.java:302)
at org.mapsforge.map.rendertheme.XmlUtils.createBitmap(XmlUtils.java:64)
at org.mapsforge.map.rendertheme.renderinstruction.RenderInstruction.createBitmap(RenderInstruction.java:131)
at org.mapsforge.map.rendertheme.renderinstruction.Symbol.getBitmap(Symbol.java:62)
at org.mapsforge.map.rendertheme.renderinstruction.Caption.<init>(Caption.java:96)
at org.mapsforge.map.rendertheme.rule.RenderThemeHandler.startElement(RenderThemeHandler.java:186)
at org.mapsforge.map.rendertheme.rule.RenderThemeHandler.processRenderTheme(RenderThemeHandler.java:107)
at org.mapsforge.map.rendertheme.rule.RenderThemeHandler.getRenderTheme(RenderThemeHandler.java:67)
at org.mapsforge.map.rendertheme.rule.RenderThemeFuture$RenderThemeCallable.call(RenderThemeFuture.java:60)
at org.mapsforge.map.rendertheme.rule.RenderThemeFuture$RenderThemeCallable.call(RenderThemeFuture.java:43)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.lang.Thread.run(Thread.java:841)
主要活动代码(几乎未更改,仅与原始代码相比有必要更改):
package com.maptests.mapsforgetest;
import java.io.File;
import org.mapsforge.core.model.LatLong;
import org.mapsforge.map.android.graphics.AndroidGraphicFactory;
import org.mapsforge.map.android.util.AndroidUtil;
import org.mapsforge.map.android.view.MapView;
import org.mapsforge.map.layer.cache.TileCache;
import org.mapsforge.map.layer.renderer.TileRendererLayer;
import org.mapsforge.map.datastore.MapDataStore;
import org.mapsforge.map.reader.MapFile;
import org.mapsforge.map.rendertheme.InternalRenderTheme;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Environment;
public class MainActivity extends AppCompatActivity {
// name of the map file in the external storage
private static final String MAPFILE = "germany.map";
private MapView mapView;
private TileCache tileCache;
private TileRendererLayer tileRendererLayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidGraphicFactory.createInstance(this.getApplication());
this.mapView = new MapView(this);
setContentView(this.mapView);
this.mapView.setClickable(true);
this.mapView.getMapScaleBar().setVisible(true);
this.mapView.setBuiltInZoomControls(true);
this.mapView.getMapZoomControls().setZoomLevelMin((byte) 10);
this.mapView.getMapZoomControls().setZoomLevelMax((byte) 20);
// create a tile cache of suitable size
this.tileCache = AndroidUtil.createTileCache(this, "mapcache",
mapView.getModel().displayModel.getTileSize(), 1f,
this.mapView.getModel().frameBufferModel.getOverdrawFactor());
}
@Override
protected void onStart() {
super.onStart();
this.mapView.getModel().mapViewPosition.setCenter(new LatLong(52.229081, 21.068434));
this.mapView.getModel().mapViewPosition.setZoomLevel((byte) 12);
// tile renderer layer using internal render theme
MapDataStore mapDataStore = new MapFile(getMapFile());
this.tileRendererLayer = new TileRendererLayer(tileCache, mapDataStore,
this.mapView.getModel().mapViewPosition, false, true, AndroidGraphicFactory.INSTANCE);
tileRendererLayer.setXmlRenderTheme(InternalRenderTheme.OSMARENDER);
// only once a layer is associated with a mapView the rendering starts
this.mapView.getLayerManager().getLayers().add(tileRendererLayer);
}
@Override
protected void onDestroy() {
super.onDestroy();
this.mapView.destroyAll();
}
private File getMapFile() {
File file = new File(Environment.getExternalStorageDirectory(), MAPFILE);
return file;
}
}
和我的XML设计文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.maptests.mapsforgetest.MainActivity">
<org.mapsforge.map.android.view.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
我想我已经添加了所有必需的内容。jar-s:
mapsforge-core-0.6。0.jar,
mapsforge-map-0.6。jar,
mapsforge-map-android,
mapsforge-map-awt-0.6。0.jar,
mapsforge-map-reader-0.6。0.jar。
还有其他我应该添加的库吗?
根据logcat的meage和我读到的,默认地图主题有问题,我如何解决这个问题?
根据集成指南,您需要另外导入:
implementation 'com.caverock:androidsvg:1.4'
您应该通过将其添加到您的build.gradle
或使用等效的jar来添加主题库:
implementation 'org.mapsforge:mapsforge-themes:[CURRENT-VERSION]'
有关更多信息,请参阅集成指南。
Cichocki,我也遇到过这样的情况,让我们开始吧,是的,它缺少库映射中的类。0.6,以及其他的,您需要下载此源代码,它是一个库svg:https://github.com/senkir/androidsvg下载该repo,导入到您的工作区并添加到您的项目中我在eclipse中完成了它,添加为库,运行该代码不需要添加任何额外的内容,您应该看到地图,祝您好运
本文向大家介绍jQuery实现简单的图片查看器,包括了jQuery实现简单的图片查看器的使用技巧和注意事项,需要的朋友参考一下 项目中自己diy了一个图片查看器。因为初始代码不是自己的,只是在上面改了一下也没有弄的很漂亮。等以后有时间了在重写一下样式和封装,作为备用的只是积累吧。如果有童鞋有用到,完全可以在此基础上改,比较容易,代码也比较简单 图片查看器主要有几个功能: 1.显示图片和图片信息(
错误:
操作步骤: ①登录账号进入工作台,选择地图点击编辑进入编辑地图页面,点击锁定默认视图。 提示 ●锁定视图后,退出地图再次进入显示默认锁定的视图。 操作动图: [查看原图]
自定义地图上两点,绘制出两点直接的路径。使用MKPolyline绘制路径,支持长按(long press)地图自定义两点坐标。 作者说:参照http://code.google.com/p/ashiphone/downloads/detail?name=MapWithRoutes.zip
问题内容: 我正在Ubuntu中编写一个PyGTK GUI应用程序以浏览一些图像,并且双击该图像时(例如在Nautilus中打开该图像时),我想在默认图像查看器应用程序中打开该图像。 我该怎么做? 问题答案: 我不知道具体使用PyGTK,但是:打开了文件的默认应用程序,因此运行类似的命令应该可以: 编辑: 我建议使用该模块,如注释中。我还不确定确切如何使用它,因此我仅在示例中进行了展示。
通过输入起始点位置的GPS和终点位置的GPS,能够快速地在WebView中显示的谷歌地图上上画出轨迹路线(自驾、徒步、公交等)。并可获取到地理信息。 [Code4App.com]