web-dev-qa-db-ja.com

PokèmonGoは、Google Map APIを使用してカスタムGoogleマップをどのように使用しますか?

マップがカスタマイズできるGoogle APIドキュメントのどこにも見つかりません(= Webでのみカスタマイズできることを知っています)ポケモンGoアプリで、Google APIを使用してカスタムマップを表示します。

PokèmonGoのリファレンスはGoogleマップを使用しています: https://www.reddit.com/r/pokemongo/comments/4s71t1/suggestion_download_city_map_as_a_way_to_decrease/

このアプローチを理解できる人はいますか?

カスタムマップiは、緑と青空のある以下のマップを意味します: enter image description here

22
KD.

PokémonGOの使い方はわかりませんが、いくつかのレイアウトトリックを使用すると、見栄えの良い効果を得ることができます。私は空の画像を使用しており、空の画像とマップをグラデーションビュー(地平線をシミュレートするため)で、そしてマップを半透明の緑色のビューでカバーしています。

activity_maps.xml

<LinearLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical">

    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="170dp">

        <ImageView
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:scaleType="centerCrop"
            Android:src="@drawable/sky"/>

        <View
            Android:layout_width="match_parent"
            Android:layout_height="20dp"
            Android:layout_alignParentBottom="true"
            Android:background="@drawable/gradientsky"/>
    </RelativeLayout>

    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

        <fragment
            Android:id="@+id/map"
            Android:name="com.google.Android.gms.maps.SupportMapFragment"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            tools:context="mypackage.MapsActivity"/>

        <View
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:background="#2200ff00"/>

        <View
            Android:layout_width="match_parent"
            Android:layout_height="20dp"
            Android:background="@drawable/gradientmap"/>

    </RelativeLayout>

</LinearLayout>

gradientsky.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
       Android:shape="rectangle">
    <gradient
        Android:angle="90"
        Android:startColor="#ffffff"
        Android:endColor="#00ffffff" />
</shape>

gradientmap.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
       Android:shape="rectangle">
    <gradient
        Android:angle="270"
        Android:startColor="#ffffff"
        Android:endColor="#00ffffff" />
</shape>

MapsActivity.Java(簡単ですが、例を完成させるために追加しています)

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_maps);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap map) {
        map.getUiSettings().setCompassEnabled(false);
        map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        CameraPosition cameraPosition = new CameraPosition.Builder()
                .target(new LatLng(39.87266,-4.028275))
                .zoom(18)
                .tilt(67.5f)
                .bearing(314)
                .build();
        map.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
    }
}

結果は次のようになります。

enter image description here

別のアプローチは、TileOverlayを使用してカスタムマップを表示することです。タイルオーバーレイの詳細については、 ここ を参照してください。

例を改善するために、マップが回転したときに空が動くように、空に視差効果を追加することができます。

46
antonio

Wikipedia arcticle ポケモンGoの作成者へ:

Niantic、Inc.は、拡張現実モバイルゲームIngressとPokémonGoの開発で最もよく知られているソフトウェア開発会社です。 Googleの内部スタートアップであるNiantic Labsとして、2010年にKeyhole、Inc.の創設者John Hankeによって設立されました。

ご覧のとおり、NianticはGoogleの内部スタートアップでした。両社は別々の道を歩んだが、グーグルは依然としてナイアンティックに投資している。 Nianticにはいくつかの可能性があると思いますが、それは私たちには利用できません。あなたが言ったように、私はAndroid用のGoogleマップのドキュメントにも方法を見つけませんでした。

これが本当かどうかは正確にはわかりませんが、それは単なる推測です。

5
Bona Fide