我开始使用Osmdroid,我想使用这项技术来显示关于F1赛道的地图.我有一张大图,我可以把它切成小块.
我可以修改osmdroid库来上传这些图片吗?
我想在我的资源文件夹中保存这些位图(tile).
我很失落如何做到这一点.
我正在使用这种方式,因为当我尝试显示这个完整的全尺寸图片时,android通常会出现内存错误.如果我只显示图像的一些图块(取决于缩放),也许我的应用程序可以更好地工作?
提前致谢!
在我的应用中,我使用osmdroid处理地图。地图图块已下载并保存在/ storage / osmdroid中。该应用程序需要权限WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE。如果我拒绝访问存储,则不会显示地图。有什么方法可以显示地图而无需访问手机内存?
我在Android中使用osmdroid来满足我的映射需求.直到几天前,我才能看到地图并且每件事情都没问题,但现在每次我的地图活动开始时,我都会得到一张空地图和以下内容:
08-22 07:47:01.113: WARN/org.osmdroid.tileprovider.modules.MapTileDownloader(470): UnknownHostException downloading MapTile: /10/520/387 : java.net.UnknownHostException: Unable to resolve host "tile.openstreetmap.org": No address associated with hostname
08-22 07:47:01.133: WARN/org.osmdroid.tileprovider.modules.MapTileDownloader(470): UnknownHostException downloading MapTile: /10/516/387 : java.net.UnknownHostException: Unable to resolve host "tile.openstreetmap.org": No address associated with hostname
08-22 07:47:01.284: INFO/org.osmdroid.tileprovider.modules.MapTileModuleProviderBase(470): Tile loader can't continue
08-22 07:47:01.284: INFO/org.osmdroid.tileprovider.modules.MapTileModuleProviderBase(470): org.osmdroid.tileprovider.modules.MapTileModuleProviderBase$CantContinueException: java.net.UnknownHostException: Unable to resolve host "tile.openstreetmap.org": No address associated with hostname
08-22 07:47:01.284: INFO/org.osmdroid.tileprovider.modules.MapTileModuleProviderBase(470): at org.osmdroid.tileprovider.modules.MapTileDownloader$TileLoader.loadTile(MapTileDownloader.java:197)
08-22 07:47:01.284: INFO/org.osmdroid.tileprovider.modules.MapTileModuleProviderBase(470): at org.osmdroid.tileprovider.modules.MapTileModuleProviderBase$TileLoader.run(MapTileModuleProviderBase.java:239)
08-22 07:47:01.284: INFO/org.osmdroid.tileprovider.modules.MapTileModuleProviderBase(470): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
08-22 07:47:01.284: INFO/org.osmdroid.tileprovider.modules.MapTileModuleProviderBase(470): at …Run Code Online (Sandbox Code Playgroud) 我是Android应用程序开发的新手,我必须创建一个离线地图Android应用程序.
我使用Mobile Atlas Creator获取地图视图osmdroid .zip格式,我不知道如何在我的应用程序中添加它.
有人可以告诉我如何在我的应用程序中使用Osmdroid吗?如果您能提供逐步说明,我将不胜感激.
使用多点触控进行缩放时,osmdroid的行为不正确.另外我在jar文件中发现了一些使用不同许可证的源代码,因此我不确定是否可以使用它.
是否可以在osmdroid MapView Overlay中的绘制多边形中设置EventListener?我想在Overlay上打印,触摸后我想改变它的颜色或处理Polygon背后的数据.
例如:
Poly1:ID = 1337,P1(0,0),P2(1,0),......,Pn(0,0)
Poly2:ID = 42,P1(10,7),P2(18,39),......,Pn(10,7)
触摸Poly1后我想知道aha ID 1337被按下了.想要改变它的颜色.
我怎么能实现这样的行为?
我是OSM和OSMdroid的新手.
我正在按照这个非常好的教程来显示离线地图.基本上我所做的是:
/mnt/sdcard/osmdroid/问题是瓷砖没有渲染.我有一个空白页面.
我找到了这个解决方案来解决我的问题.
但现在,我不得不使用PNG文件,这需要更多的空间.它对我的应用程序来说效率不高,因为用户必须下载更大的包.
我的问题是:如何在OSMDroid和MapQuest中使用JPEG图块?
提前致谢.
我需要开发一个Android应用程序,需要显示地图,但必须一直在线下工作,地图对应一个小城市,浏览了一下我偶然发现osmdroid,这与小.mbtiles文件的使用似乎理想的,事实上我用这个好帖子来帮助我.
运行示例应用程序后,MapView显示但没有显示,只有默认灰色图块.我能找到的唯一类似于错误的是调试器上的以下片段:
09-26 16:55:53.931 353-353/com.example.myfirstapp2 I/dalvikvm: Could not find method org.osmdroid.views.MapView.getScaleX, referenced from method org.osmdroid.views.overlay.SafeDrawOverlay.draw
09-26 16:55:53.931 353-353/com.example.myfirstapp2 W/dalvikvm: VFY: unable to resolve virtual method 1476: Lorg/osmdroid/views/MapView;.getScaleX ()F
Run Code Online (Sandbox Code Playgroud)
任何帮助赞赏.
//// OSMdroid以标记为中心////
我添加标记,我需要以所有标记都可见的方式映射最大增加或减少
我的代码:
public class mapcode extends Activity {
globalvar appState;
int stats=0;
private MapView mapView;
private IMapController mapController;
private SimpleLocationOverlay mMyLocationOverlay;
private ScaleBarOverlay mScaleBarOverlay;
ItemizedIconOverlay<OverlayItem> currentLocationOverlay;
DefaultResourceProxyImpl resourceProxy;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.map);
appState = ((globalvar) getApplicationContext());
mapView = (MapView) this.findViewById(R.id.mapview);
mapView.setTileSource(TileSourceFactory.MAPNIK);
// mapView.setBuiltInZoomControls(true); //?????? ZOOM +-
mapView.setMultiTouchControls(true);
mapController = this.mapView.getController();
mapController.setZoom(2);
this.mMyLocationOverlay = new SimpleLocationOverlay(this);
this.mapView.getOverlays().add(mMyLocationOverlay);
this.mScaleBarOverlay = new ScaleBarOverlay(this);
this.mapView.getOverlays().add(mScaleBarOverlay);
// this.mapView
/////////////////
resourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
GeoPoint currentLocation = new GeoPoint(55.860863,37.115046);
GeoPoint …Run Code Online (Sandbox Code Playgroud) 我使用的是 osmdroid 版本 5.6.5(最新版本),地图的图块(MAPNIK)加载非常缓慢。
这发生在我尝试使用该应用程序的两台设备上,均具有高速互联网连接(蜂窝和 WIFI)。
这似乎是某个地方的问题,因为加载不可能那么慢
这是活动中地图的代码片段:
@Override
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
appContext = getApplicationContext();
//important! set your user agent to prevent getting banned from the osm servers
Configuration.getInstance().load(appContext, PreferenceManager.getDefaultSharedPreferences(appContext));
setContentView(R.layout.navigation);
mMapView = (MapView) findViewById(map);
mMapView.setTileSource(TileSourceFactory.MAPNIK);
mMapView.setMultiTouchControls(true);
mMapView.setBuiltInZoomControls(true);
// add rotation gesture
mRotationGestureOverlay = new RotationGestureOverlay(this, mMapView);
mRotationGestureOverlay.setEnabled(true);
mMapView.setMultiTouchControls(true);
mMapView.getOverlays().add(this.mRotationGestureOverlay);
// Set to default location
IMapController mapController = mMapView.getController();
mapController.setZoom(15);
GeoPoint startPoint = new GeoPoint(48.8589654,2.2926013);
mapController.setCenter(startPoint);
}
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到这种缓慢加载的原因。是否可以选择使用更简单的地图?那会有帮助吗?有没有其他解决方案,我做错了什么?
谢谢。