こんにちは、過去1週間の皆さん、チュートリアル/マニュアルまたは手順を探して、OpenストリートマップをAndroidアプリケーションに含めます。見つけたのは、より多くの機能を備えた大きなプロジェクトです。 、それ以外の場合、非常に多くの質問が「方法」についての適切な結論なしに終了しました。
初心者が参照できる適切なブログ/サイトまたはドキュメントはありますか?
チュートリアルは知りませんが、Osmdroidを使用した最小限の例のために私が書いたコードは次のとおりです。
// This is all you need to display an OSM map using osmdroid
package osmdemo.demo;
import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapController;
import org.osmdroid.views.MapView;
import Android.app.Activity;
import Android.os.Bundle;
public class OsmdroidDemoMap extends Activity {
private MapView mMapView;
private MapController mMapController;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.osm_main);
mMapView = (MapView) findViewById(R.id.mapview);
mMapView.setTileSource(TileSourceFactory.DEFAULT_TILE_SOURCE);
mMapView.setBuiltInZoomControls(true);
mMapController = (MapController) mMapView.getController();
mMapController.setZoom(13);
GeoPoint gPt = new GeoPoint(51500000, -150000);
mMapController.setCenter(gPt);
}
}
/* HAVE THIS AS YOUR osm_main.xml
---------------------------------------------------------- XML START
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
<org.osmdroid.views.MapView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/mapview"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:clickable="true" />
</LinearLayout>
---------------------------------------------------------- XML END
Include slf4j-Android-1.5.8.jar and osmdroid-Android-4.1.jar in the build path
(Google search for where to get them from)
*/
OSMからのタイルのダウンロードがブロックされないようにするには、最新バージョン(4.1)を使用する必要があることに注意してください。
また、リポジトリをGithubに移動しており、プロセスがまだ完了していないことにも注意してください。このページ downloads jarへのリンクが含まれています
このOSMdroidサンプルプロジェクト は、間違いなく私が遭遇した中で最も単純なものです。稼働するまでに5分もかかりません。マニフェストファイルに注意してください。
もう少し複雑にするために、 このチュートリアル は、現在のジオポイントを含むマップを表示します。
ここにいくつかのスニペットがあります さまざまなプロジェクトから。ただし、それらすべてをテストしたわけではありません。
OSMdroid と SLF4J をダウンロードし、libs
フォルダー、Add as Library
osmdroidに配置し、適切な権限でAndroidManifest.xmlを修正する必要があります(最初のチュートリアルを参照) 。これを行う場合、最初のチュートリアルで推奨されているようにgradle.build
ファイルを変更する必要はありません。
まず、古いバージョンのosmdroid(3.x)を使用することをお勧めします。問題がなければ、新しいバージョンのosmdroid(4.xまたは5.x)に移行します。
新しいバージョンでは、GeoPointクラスとMapControllerクラスの名前が変更されているため、 INCOMPATIBLE TYPES ERROR に注意してください
IGeoPointはGeoPointに変換できません
IMapControllerはMapControllerに変換できません
手順について説明しました [〜#〜]こちら[〜#〜] 。また、非常に便利な サンプルプロジェクト もご覧になることをお勧めします。そして [〜#〜] how [〜#〜] ;)に関する彼らのドキュメント
オフラインでの使用
1- [〜#〜] mobac [〜#〜] を使用してマップをダウンロードする必要があります。
2- /mnt/sdcard/osmdroid/
に配置します
これらの手順の後、すべては@Nickが説明したものと同じです。
サービスのようにGoogleマップを使用している人が犯す1つの間違いは、OpenStreetMapを単なるマップタイルプロバイダーとして扱うことです。 OpenStreetMapは実際には無料の編集可能なWikiジオデータベースであり、このデータベースを使用するには3つの方法があることを知っておく必要があります。
このデータベースに書き込むためのツールを作成できます。 REST Api https://wiki.openstreetmap.org/wiki/API_v0.6 があります。これは、データベースに変更を加える必要がある場合に使用します。これは最も一般的ではない使用例ですが、最も完全に文書化されています。APIはメインのOSM APIであり、データのダウンロードにも使用できますが、OSMデータのダウンロードに推奨される方法ではありません。
次に、このデータベースからデータを読み取ることができます。最善の方法は、惑星の抽出 https://wiki.openstreetmap.org/wiki/Planet.osm と、geofabrikがホストする小さな抽出 http://download.geofabrik。 de / 。より具体的なクエリを作成する場合、最適なオプションはOverpass API https://wiki.openstreetmap.org/wiki/Overpass_API です。
最後に、(マップタイル、ルーティング、POI検索、ジオコーディング)などのOSMデータの上に構築されるさまざまなサービスがあります。これはおそらくあなたが探しているものであり、これには多くのオプションがあります。 Androidの良い完全なソリューションはMapboxです https://www.mapbox.com/Android-docs/map-sdk/overview/ 。mapboxのすばらしい点Android sdkは、1つのサービスを使用して、マップタイル、ルーティング、POI検索、ジオコーディング、オフラインマップ、さらにはライブトラフィックなどすべてを提供します。また、上記のリンクをたどり、チュートリアルとサンプルを見ることができます。コード。1つの悪い点は、mapboxサービスを使用する必要があり、ベンダーロックインのリスクがあることですが、ほとんどのmapbox製品はオープンソースです。少し一生懸命作業すれば、他のソリューションを自分で作成できるはずです。同じように。
お役に立てれば。
OSMは本当に素晴らしいですが、google apiで特別に使用するのは難しいです。また、チュートリアルやドキュメントがあまりないため、最適なオプションは mapbox のようなサービスを使用することです。ソース、使いやすく、手頃な価格。これがお役に立てば幸いです。