我需要帮助,
我试图通过让用户多点触摸(首先是 2 个手指触摸)来缩放到地图视图,我知道有 setMultiTouchControls() 函数,但这不是我想要做的。
我尝试用图片来解释:)这比写作更容易;
黑色粗体箭头表示手指的移动方向。相反方向也可以考虑同样的情况。(放大)

好吧,这个问题已经困扰我好几个小时了,我有以下相对简单的代码,可以在 osmdroid 地图上放置一个标记
final ArrayList<OverlayItem> items = new ArrayList<OverlayItem>();
OverlayItem marker = new OverlayItem("markerTitle", "markerDescription", new GeoPoint(52.033954,1.210179));
marker.setMarkerHotspot(OverlayItem.HotspotPlace.TOP_CENTER);
items.add(marker);
Drawable newMarker = this.getResources().getDrawable(R.drawable.maincar);
DefaultResourceProxyImpl resProxyImp = new DefaultResourceProxyImpl(getApplicationContext());
ItemizedIconOverlay markersOverlay = new ItemizedIconOverlay<OverlayItem>(items, newMarker, null, resProxyImp);
mapView.getOverlays().add(markersOverlay);
Run Code Online (Sandbox Code Playgroud)
然而,标记始终面向屏幕顶部(0 度旋转)。我怎样才能轻松地将每个标记旋转到指定的角度(360 度是一个完整的圆)?
我是新来的osmdroid。我正在使用离线地图mbtiles。我在地图上使用了太多标记,这使得我的地图非常慢。我读到了一些聚类会有所帮助的地方,但我没有得到任何关于如何在osmdroid. 请帮忙。
我正在使用此处给出的谷歌地图标记动画逻辑。
我的标记变得动画,但每次之后marker.setPosition(newPosition);
我需要调用mapView.invalidate();刷新地图,导致动画非常缓慢。
有什么解决方法吗?
我需要帮助将传单地图集成到颤振中。我正在处理的项目需要在地图上显示自定义标记、动画、路线和绘图。但是我在 flutter 中找不到任何解释这一点的文档或教程。
我真的需要一些OSMdroid库的帮助.将映射存储在sdcard中作为zip文件很有用.此外,可以解压缩地图,并且可以直接使用图像文件以进行更快的渲染.
我设法从切片中加载瓷砖,当瓷砖未被切割,具有.tile扩展名并存储在文件夹/ sdcard/osmdroid/tiles/Mapnik/...中. 为了创建我的地图,我使用了Mobile Atlas Creator和OSMAND磁贴存储格式.
我在网上阅读了一些声称存储包含磁贴的zip文件存储在/ sdcard/osmdroid中的教程,然后将从zip加载离线地图.但它对我不起作用.
有没有人设法使它工作?如果是这样的话?
我是否需要实例化自己的MapTileFileArchiveProvider?如果是这样,我该怎么做?任何例子?
有谁知道如何在OSMDroid中为PathOverlay元素设置一行的宽度?
PathOverlay类本身并没有真正有用的东西.我试着进入PathOverlay的draw方法使用的Paint和Canvas.android.graphics.Paint类有一个setStrokeWidth(float)方法,但这对行宽没有影响.
透过Paint API,没有太多其他帮助; 同样适用于画布.
我正在尝试开发一个Android应用程序来处理离线地图.感谢一些帮助,我创建了地图,并且我已经能够离线加载地图.
现在我正在尝试创建路线,但我还不太了解如何做到这一点.
如果我是正确的,我必须使用OSM有节点,这样的与关系的描述类似的文件在这里.
我的问题是,如何将此文件的数据加载到我的应用程序?我无法找到如何将此数据加载到应用程序的任何示例.我发现的是,这个osm文件可以转换为更小的pbf文件.
任何人都可以解释我如何使用这个osm数据?谁能举个例子?或者我采取了错误的做法?
这段代码加载一个700kb的OSM文件,但是因为它有99MB所以它会加载我的文件.
// create the factory
SAXParserFactory factory = SAXParserFactory.newInstance();
// create a parser
SAXParser parser = factory.newSAXParser();
// create the reader (scanner)
XMLReader xmlreader = parser.getXMLReader();
// assign our handler
xmlreader.setContentHandler(osmHandler);
xmlInputStream = context.getResources().openRawResource(R.raw.lisboa);
//xmlInputStream = context.getResources().openRawResource(R.raw.milano);
//xmlInputStream = new FileInputStream(new File(Environment.getExternalStorageDirectory()+File.separator+"MyMaps","Lissabon.osm"));
xmlreader.parse(new InputSource(xmlInputStream));
osmHandler.isLoaded=true;
Run Code Online (Sandbox Code Playgroud)
我正在使用osmbonuspack_v3.4和osmdroid_3.0.10.
谢谢
我有一个带有mapView,zoomIn按钮,zoomOut按钮的LinearLayout.应用程序接收touchevents,它应该管理具有给定信息(X坐标,Y坐标,触摸事件类型)的LinearLayout子项我能够使用以下代码zoomIn和ZoomOut,但我无法移动地图:
@Override
public boolean onTouch(View arg0, MotionEvent event) {
int action = event.getAction();
switch(action)
{
case MotionEvent.ACTION_DOWN:
savedTouchedX = event.getX();
savedTouchedY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
doPanning(event, mapView);
break;
case MotionEvent.ACTION_UP:
doPanning(event, mapView);
savedTouchedX = -1;
savedTouchedY = -1;
break;
default:
break;
}
return true;
}
});
//move mapView
private boolean doPanning(MotionEvent e, MapView mapView)
{
if(savedTouchedX >= 0 && savedTouchedY >= 0)
{
IGeoPoint mapCenter = mapView.getMapCenter();
GeoPoint panToCenter = new GeoPoint((int)(mapCenter.getLatitudeE6() + (e.getY() - savedTouchedY) * 1E5),(int)(mapCenter.getLongitudeE6() - …Run Code Online (Sandbox Code Playgroud) 我有一台Alcatel One Touch 7040,当我测试我的osmdroid样本时,地图不会渲染.我已经在其他设备上进行了测试,地图正确地渲染,只有在这个设备上它们不是.我以为我的设备内存很低,所以我从我的设备中删除了一些应用程序,仍然没有任何改进,有人可以告诉我可能是什么原因?
以下是我的logcat(由于超出了字数限制,它的某些部分已被删除):
10-17 23:03:27.688 26424-26424/marine.com.osmsample I/OsmDroid: Using tile source: Mapnik
10-17 23:03:27.702 26424-26424/marine.com.osmsample E/OsmDroid: unable to create a nomedia file. downloaded tiles may be visible to the gallery. open failed: ENOENT (No such file or directory)
10-17 23:03:27.715 26424-26424/marine.com.osmsample E/SQLiteLog: (14) cannot open file at line 30202 of [00bb9c9ce4]
10-17 23:03:27.715 26424-26424/marine.com.osmsample E/SQLiteLog: (14) os_unix.c:30202: (2) open(/storage/sdcard0/osmdroid/tiles/cache.db) -
10-17 23:03:27.729 26424-26424/marine.com.osmsample E/SQLiteDatabase: Failed to open database '/storage/sdcard0/osmdroid/tiles/cache.db'.
android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open database
at …Run Code Online (Sandbox Code Playgroud) osmdroid ×10
android ×9
java ×2
offline ×2
archive ×1
flutter ×1
leaflet ×1
leaflet.draw ×1
map ×1
maps ×1
multi-touch ×1
routing ×1
touch-event ×1
zooming ×1