我需要构建一个 Android 地图应用程序,我将在该应用程序上绘制考古 POI(兴趣点)。要求是拥有类似于谷歌地图卫星视图的航拍照片。但是,另一个要求是数据连接不可用时的离线地图功能,因此排除了使用谷歌地图的可能性。
所以我有两个问题。
OSMDroid 是否可以在不使用 Bing 的情况下免费访问支持 Arial 摄影或卫星的图块资源?
我知道 OSM 可以支持具有 Ariel 摄影地图的 Bing,但我无法让它工作。是否有任何您可以指向我的 bing 特定教程,或者是一个简单的示例,说明如何在 OSMDroid 中显示一个 bing 地图,因为我一直在寻找几个小时并拉出我的头发。
在 eclise 中,我已经能够构建一个简单的应用程序来显示 OSMDroid (Mapink) 的默认地图。为了尝试使用 Bing,我在项目源代码中添加了三个类。BingMapTileSource.Java、ImageryMetaData.Java 和 ImageryMetaDataResouce.Java。我从 OSMDroid SVN 上的 TileProvider 目录的 Bing 子文件夹中得到这些(链接在这里)
但是,当我如下在 onCreate 中使用它时,我在 BingMapTileSource.java 类中出现空指针错误。
MapView mapView = new MapView(this, 256);
mapView.setClickable(true);
mapView.setBuiltInZoomControls(true);
String m_locale=Locale.getDefault().getISO3Language()+"-"+Locale.getDefault().getISO3Language();
mapView.setTileSource(new BingMapTileSource("Bing",m_locale));
mapView.getController().setZoom(10);
mapView.getController().setCenter(new GeoPoint(39.461078, 2.856445));
setContentView(mapView);
我相信这个问题的原因是以下类变量在首次使用之前从未初始化过。
s_roadMetaData = null;
s_aerialMetaData = null;
s_aerialwithLabelsMetaData = null;
我唯一能看到它们被初始化的地方是一个名为 InitMetaData 的静态方法,它永远不会被调用。
public static synchronized void initMetaData(final Context aContext)
尽管在其说明的 Javadoc 中提供了一些关于其目的的线索。
/**
* Initialize BingMap tile source.<br>
* This method should be invoked before class instantiation.<br>
* It get dynamically the REST service url to be used to get tile in each supported map view mode.
* @param a_BingMapKey The user's BingMap key.
* @throws Exception
*/
但是,我不知道如何使用它。任何关于教程、示例或一些代码的建议或指针将不胜感激。