嗨,大家过去一周我正在寻找教程/手册或步骤将开放街道地图包含到我的Android应用程序中.所有我发现的要么是一个功能更强大的大项目,否则很多问题都没有得到关于"如何"的正确结论......!
是否有适当的博客/网站或文件,可以更新鲜的参考.
如何以编程方式缓存/下载google map v2 tile?有可能吗?
Bcos根据这个prntscr.com/3cyiqf它是不可能的,但是我已经看到这个链接 TileProvider使用本地磁贴 我认为如果Android提供TileProvider类来加载/使用资产中的磁贴比它应该是可用于缓存/下载的东西以编程方式/运行时
我的实际要求是:
如果用户当时与互联网连接,他可以下载/缓存特定区域的磁贴,或者他可以在电话屏幕中下载/缓存可见地图,并且当他下线时,下载的地图应该是可见的.
到目前为止我做了什么:
我见过OSMDROID lib它们提供了非常好的功能,但问题是我只想使用Google Map V2
我已经检查过静态地图API,我也创建了一个用于下载图块的演示,但是他们返回了一个具有指定缩放级别的图像,所以在这种情况下,如果我使用静态地图api,用户只能看到1级别的地图,他们就不能能够放大/缩小所以不好.
结论:
我想知道Google Map V2是否提供了以编程方式/运行时下载/缓存地图图块的任何工具?
编辑
我可以使用谷歌地图引擎吗?
android offline-caching google-maps-api-2 osmdroid google-maps-engine
我是Open Street Map的新手.我做了一些研究,发现我们可以将地图下载并存储到一个文件夹中.但我没有找到任何提供离线Open Street Map的教程或示例.有人可以提供一步一步的教程,请执行离线开放街道地图的指南.我正在关注此示例http://android-coding.blogspot.com/2012/06/example-of-implementing-openstreetmap.html但现在我想在没有连接时使其可用.
这段时间我一直在苦苦挣扎.我想在我的地图上添加叠加层.我正在使用开源OSMdroid.但我得到的例子是从一个角落到另一个角落的直线红线.我的目标是在我的geoPoint设置中添加一些图标.
这是我的代码:
package osmdemo.demo;
import java.util.List;
import microsoft.mappoint.TileSystem;
import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;
import org.osmdroid.views.MapView.Projection;
import org.osmdroid.views.overlay.Overlay;
import org.osmdroid.views.overlay.ScaleBarOverlay;
import org.osmdroid.views.util.constants.MapViewConstants;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.location.LocationManager;
import android.os.Bundle;
public class map extends Activity implements MapViewConstants
{
/** Called when the activity is first created. */
protected static final String PROVIDER_NAME = LocationManager.GPS_PROVIDER;
MapController mapController;
MapView mapView;
ScaleBarOverlay mScaleBarOverlay;
private MapOverlay mmapOverlay = null;
private LocationManager mLocMgr; …Run Code Online (Sandbox Code Playgroud) 我写了一个映射应用程序,它有两个活动,一个活动显示一个谷歌地图视图,另一个显示使用osmdroid 3.0.5 jar的等效视图.
到目前为止,我一直只在模拟器上进行测试,其功能在显示的区域和覆盖数据方面完全相同.现在我在真正的姜饼设备上运行应用程序,我注意到谷歌地图活动似乎支持缩放,而Osmdroid不支持.
我没有写任何特定的代码来缩放谷歌方面或Osmdroid.这两个活动都实现了OnTouchListener.这两个活动只有OnTouch的存根,如:
@Override
public boolean onTouch(View v, MotionEvent e) {
// chain it for now
return false;
}
Run Code Online (Sandbox Code Playgroud)
我在Osmdroid活动中的mapview是类:org.osmdroid.views.MapView
有没有人知道如何使用osmdroid进行缩放工作,或者知道使用osmdroid的示例应用程序,我可以研究并适应我的应用程序?
我试图把用户代理(参见https://github.com/osmdroid/osmdroid/wiki/Important-notes-on-using-osmdroid-in-your-app),但是当我把OpenStreetMapTileProviderConstants.setUserAgentValue(BuildConfig.APPLICATION_ID);Android studio 告诉我认为 setUserAgentValue 已折旧。
我能做些什么来解决这个问题?现在,当我运行应用程序时,我有一个没有地图的网格。
非常感谢您提前!
我正在尝试使用osmdroid库实现MapView.
然而,目前我似乎能够放大的最远距离不足以达到我的目的.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Setup map view:
mapView = new MapView(this, 256);
setContentView(mapView);
// Parse parameters
Intent intent = getIntent();
center = intent.getDoubleArrayExtra(INITIAL_CENTER);
multiTouch = intent.getBooleanExtra(MULTI_TOUCH, DEFAULT_MULTI_TOUCH);
zoomButtons = intent.getBooleanExtra(ZOOM_BUTTONS, DEFAULT_ZOOM_BUTTONS);
zoomLevel = intent.getIntExtra(ZOOM_LEVEL, DEFAULT_ZOOM_LEVEL);
if (center == null)
center = DEFAULT_INITIAL_CENTER;
// Applying parameters
mapView.setClickable(true);
mapView.setMultiTouchControls(multiTouch);
mapView.setBuiltInZoomControls(zoomButtons);
mapView.getController().setZoom(zoomLevel);
mapView.getController().setCenter(new GeoPoint(center[0], center[1]));
mapView.setTileSource(TileSourceFactory.MAPQUESTOSM);
mapView.setMaxZoomLevel(18);
// Show current location coordinates
Toast.makeText(
getApplicationContext(),
"Latitude:\t\t" + center[0] + "\n" +
"Longitude:\t" + center[1],
Toast.LENGTH_LONG).show();
// Offline maps: …Run Code Online (Sandbox Code Playgroud) 我想知道是否有可能做这样的事情.我知道有人需要修改一些现有的代码来解决这个问题,但我想知道是否有人有任何指示在哪里看以及如何做到这一点.
我在地图上的特定区域放置一些自定义图块作为OSM图块提供程序的替代,但需要将它们存储在/ assets /文件夹中.有任何想法吗?
我目前正在研究一个学校项目,我正在尝试学习将OSM地图图块下载到手机的本地内存/缓存中的技术,以便用户能够在离线时查看地图.
这是通过给出特定位置来完成的,并且在距离该位置的特定半径/距离内的地图图块将被下载到手机存储器中(当存在在线连接时)以用于离线显示.
但是,我在理解OSMDroid的API方面遇到了一些麻烦.根据我的理解,所涉及的课程似乎是:
如果我弄错了,请纠正我.
另外,在MapTileBase(我认为是提供者)中,getMapTile返回android.graphics.drawable.Drawable.
这个Drawable类甚至与离线地图显示的概念有关吗?
希望有人可以告诉我在哪里准确地将地图下载到手机的内存中,以及我们如何编辑地图以显示路线,引脚等界面项目.