我正在使用osmdroid和从OSM下载到16级的地图.我想知道是否有任何方法可以让osmdroid使用该缩放级别的磁贴但是将其绘制得更大.
问题是那个级别的瓷砖对我来说有足够的细节,但是很小.我已经看到其他一些应用程序使用相同的磁贴级别但不知何故设法将它们绘制得更大.
谢谢
我开始使用Osmdroid,我想使用这项技术来显示关于F1赛道的地图.我有一张大图,我可以把它切成小块.
我可以修改osmdroid库来上传这些图片吗?
我想在我的资源文件夹中保存这些位图(tile).
我很失落如何做到这一点.
我正在使用这种方式,因为当我尝试显示这个完整的全尺寸图片时,android通常会出现内存错误.如果我只显示图像的一些图块(取决于缩放),也许我的应用程序可以更好地工作?
提前致谢!
我正在使用osmdroid编写一个简单的android应用程序,在线工作,直到现在我能够显示地图(在线和离线),我想在地图上添加叠加(标记),我已经搜索了使用的简单示例覆盖在osmdroid中,我尝试了其中一些,但它们没有用,所以我想要任何使用osmdroid添加叠加层或marcker的例子
我正在开发一个确定osm地图中用户位置的android应用程序.我能够在地图上显示用户位置,但如果位置改变整个地图重新加载,那有什么问题?另外我如何才能提高用户位置的准确性?如何根据准确度制作一个增加和减少的圆圈(如Google中所示)?
代码:
public class OsmDemoActivity extends Activity implements LocationListener,
MapViewConstants
{
private MapView mMapView;
private MapController mapController;
private LocationManager mLocMgr;
private ItemizedOverlay<OverlayItem> mMyLocationOverlay;
private ResourceProxy mResourceProxy;
ArrayList<OverlayItem> items;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mResourceProxy = new DefaultResourceProxyImpl(getApplicationContext());
setContentView(R.layout.main);
//mMapView.setUseDataConnection(false);
initilaizeMap();
//addOverlay();
mLocMgr = (LocationManager) getSystemService(LOCATION_SERVICE);
mLocMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
public void initilaizeMap()
{
mMapView = (MapView) this.findViewById(R.id.mapView);
mMapView.setTileSource(TileSourceFactory.MAPNIK);
//mMapView.setUseDataConnection(false);
mMapView.setBuiltInZoomControls(true);
mMapView.setMultiTouchControls(true);
mapController = this.mMapView.getController();
mapController.setZoom(15);
mapController.setCenter(new GeoPoint(15.610762,32.540345));
/*
final MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mMapView,
mResourceProxy);
myLocationOverlay.enableMyLocation(); …Run Code Online (Sandbox Code Playgroud) 好.你会认为这会相对简单,但不是.
我在我的网站上使用Open街道地图,因为数据可以免费使用,编辑和更新 - 我的项目遵循这个咒语,除了googles API使用限制/保存数据限制,谷歌地图根本不适合我..至少在网上.
鉴于此,我以为我会跟随我的Android应用程序,所以我设置osmdroid利用开放的街道地图数据.
我可以在我的活动中有一个很好的地图..我也遵循一个教程,它似乎至少工作,我可以在tabhost/viewpager中的片段中有一个地图视图.然而,我真正想要的(对于平板电脑)是左边一个片段中的场所列表,右边是一个地图片段,显示这些场所的位置.
很简单我会想到,但是数小时和研究表明这是不可能的,除非你使用一些复杂的代码和一些不赞成的方法.
所以..片段(包含一个地图视图)在tabhost中完美地加载和运行..我可以从我的活动等访问片段中的方法..但没有什么可以简单地并排放置两个片段.
现在..我知道谷歌刚刚推出了他们的API v2 ..我安装了它并且玩了..不知道osmdroid如何工作,我想我可以更新所以我有MapFragment而不是SherlockFragment(我使用ABS).这个然后只是抛出了要求API密钥等的logcat错误..并且考虑到我不想使用谷歌地图数据,我认为我出错了.
所以..任何人都可以建议我如何使用市场上可用的任何东西并排获得列表片段和地图片段,但最好使用开源地图数据,这样他们就没有使用限制.
我确信全面概述"什么是可用的,以及它如何工作"将受到大量用户的非常赞赏..所以,如果有人可以建议它将是惊人的!
android android-maps osmdroid actionbarsherlock google-maps-android-api-2
我在我的Android应用程序中包含了Open Street Maps.在mapview中,用户应该能够在地图完全加载后捕获屏幕.但是,即使仍在加载mapview,用户也可以捕获图像.有人能告诉我如何检测mapview何时完全加载?
下面是我加载mapview的代码:
public class MainActivity extends Activity {
MapView mapView;
MyLocationOverlay myLocationOverlay = null;
ArrayList<OverlayItem> anotherOverlayItemArray;
protected ItemizedOverlayWithBubble<ExtendedOverlayItem> itineraryMarkers;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapview);
final ArrayList<ExtendedOverlayItem> waypointsItems = new ArrayList<ExtendedOverlayItem>();
itineraryMarkers = new ItemizedOverlayWithBubble<ExtendedOverlayItem>(this, waypointsItems, mapView, new ViaPointInfoWindow(R.layout.itinerary_bubble, mapView));
mapView.getOverlays().add(itineraryMarkers);
mapView.setTileSource(TileSourceFactory.MAPNIK);
mapView.setBuiltInZoomControls(true);
MapController mapController = mapView.getController();
mapController.setZoom(1);
GeoPoint point2 = new GeoPoint(51496994, -134733);
mapController.setCenter(point2);
Drawable marker=getResources().getDrawable(android.R.drawable.star_big_on);
GeoPoint myPoint1 = new GeoPoint(0*1000000, 0*1000000);
ExtendedOverlayItem overlayItem = new ExtendedOverlayItem("Title Test Loc", "Desc", myPoint1, …Run Code Online (Sandbox Code Playgroud) 我已经设法用它来编写一个Android应用程序来跟踪用户位置并使用标记在地图上显示它.这是相关代码:
public class MainActivity extends Activity implements LocationListener {
public MapView mapView;
private LocationManager locationManager;
MyItemizedOverlay myItemizedOverlay = null;
Drawable marker;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = (MapView) this.findViewById(R.id.mapview);
mapView.setUseDataConnection(false);
mapView.setClickable(true);
mapView.setBuiltInZoomControls(true);
mapView.setMultiTouchControls(true);
mapView.setUseDataConnection(false);
mapView.setFocusable(true);
mapView.setFocusableInTouchMode(true);
mapView.getController().setZoom(16); // set initial zoom-level, depends
// on your need
marker = getResources().getDrawable(android.R.drawable.star_on);
int markerWidth = 1;
int markerHeight = 1;
marker.setBounds(0, markerHeight, markerWidth, 0);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, this); // You can also use LocationManager.GPS_PROVIDER and
// …Run Code Online (Sandbox Code Playgroud) 我有一个开发,部署和以前成功的应用程序,它使用Osmdroid从默认的tile提供程序Mapnik加载tile
mMapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
Run Code Online (Sandbox Code Playgroud)
要么
mMapView.setTileSource(TileSourceFactory.MAPNIK);
Run Code Online (Sandbox Code Playgroud)
直到最近(可能从今天开始),真实设备(手机和平板电脑)上的瓷砖不再加载.我使用的是osmdroid 3.0.5版.如果我在模拟器上的一个小样本项目中尝试最新的4.0版本,我在尝试下载maptiles时会在logcat中看到'403 forbidden responses'.如果我切换瓷砖源
mMapView.setTileSource(TileSourceFactory.MAPQUESTOSM);
Run Code Online (Sandbox Code Playgroud)
然后地图就可以看到没有问题.我没有看到任何报告的问题上 Osmdroid网站问题清单,也没有谷歌搜索显示报告的任何新的问题,所以我问是否有人从Mapnik的看到这个新的行为,可能知道的修复?
同时Overlay在应用程序中扩展OSMdroid 类
import org.osmdroid.views.overlay.Overlay;
...
public class MapOverlayArea extends Overlay implements TextToSpeech.OnInitListener, OnTouchListener {
...
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
错误:没有为Overlay(无参数)构造函数找到合适的构造函数Overlay.Overlay(Context)不适用
在我的应用中,我使用osmdroid处理地图。地图图块已下载并保存在/ storage / osmdroid中。该应用程序需要权限WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE。如果我拒绝访问存储,则不会显示地图。有什么方法可以显示地图而无需访问手机内存?