web-dev-qa-db-ja.com

AndroidアプリケーションでOSMマップを使用する方法。?AndroidでのOSMの使用について学習するチュートリアルはありますか?

こんにちは、過去1週間の皆さん、チュートリアル/マニュアルまたは手順を探して、OpenストリートマップをAndroidアプリケーションに含めます。見つけたのは、より多くの機能を備えた大きなプロジェクトです。 、それ以外の場合、非常に多くの質問が「方法」についての適切な結論なしに終了しました。

初心者が参照できる適切なブログ/サイトまたはドキュメントはありますか?

15
rubin

チュートリアルは知りませんが、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へのリンクが含まれています

15
NickT

このOSMdroidサンプルプロジェクト は、間違いなく私が遭遇した中で最も単純なものです。稼働するまでに5分もかかりません。マニフェストファイルに注意してください。

もう少し複雑にするために、 このチュートリアル は、現在のジオポイントを含むマップを表示します。

ここにいくつかのスニペットがあります さまざまなプロジェクトから。ただし、それらすべてをテストしたわけではありません。

OSMdroidSLF4J をダウンロードし、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に変換できません

5
tony gil

手順について説明しました [〜#〜]こちら[〜#〜] 。また、非常に便利な サンプルプロジェクト もご覧になることをお勧めします。そして [〜#〜] how [〜#〜] ;)に関する彼らのドキュメント

オフラインでの使用

1- [〜#〜] mobac [〜#〜] を使用してマップをダウンロードする必要があります。

2- /mnt/sdcard/osmdroid/に配置します

これらの手順の後、すべては@Nickが説明したものと同じです。

3
Milad Faridnia

サービスのようにGoogleマップを使用している人が犯す1つの間違いは、OpenStreetMapを単なるマップタイルプロバイダーとして扱うことです。 OpenStreetMapは実際には無料の編集可能なWikiジオデータベースであり、このデータベースを使用するには3つの方法があることを知っておく必要があります。

  1. このデータベースに書き込むためのツールを作成できます。 REST Api https://wiki.openstreetmap.org/wiki/API_v0.6 があります。これは、データベースに変更を加える必要がある場合に使用します。これは最も一般的ではない使用例ですが、最も完全に文書化されています。APIはメインのOSM APIであり、データのダウンロードにも使用できますが、OSMデータのダウンロードに推奨される方法ではありません。

  2. 次に、このデータベースからデータを読み取ることができます。最善の方法は、惑星の抽出 https://wiki.openstreetmap.org/wiki/Planet.osm と、geofabrikがホストする小さな抽出 http://download.geofabrik。 de / 。より具体的なクエリを作成する場合、最適なオプションはOverpass API https://wiki.openstreetmap.org/wiki/Overpass_API です。

  3. 最後に、(マップタイル、ルーティング、POI検索、ジオコーディング)などのOSMデータの上に構築されるさまざまなサービスがあります。これはおそらくあなたが探しているものであり、これには多くのオプションがあります。 Androidの良い完全なソリューションはMapboxです https://www.mapbox.com/Android-docs/map-sdk/overview/ 。mapboxのすばらしい点Android sdkは、1つのサービスを使用して、マップタイル、ルーティング、POI検索、ジオコーディング、オフラインマップ、さらにはライブトラフィックなどすべてを提供します。また、上記のリンクをたどり、チュートリアルとサンプルを見ることができます。コード。1つの悪い点は、mapboxサービスを使用する必要があり、ベンダーロックインのリスクがあることですが、ほとんどのmapbox製品はオープンソースです。少し一生懸命作業すれば、他のソリューションを自分で作成できるはずです。同じように。

お役に立てれば。

2
Nirab Pudasaini

OSMは本当に素晴らしいですが、google apiで特別に使用するのは難しいです。また、チュートリアルやドキュメントがあまりないため、最適なオプションは mapbox のようなサービスを使用することです。ソース、使いやすく、手頃な価格。これがお役に立てば幸いです。

1
narcis dpr