地図を表示する

地図の表示

前頁「環境設定」で追加したC# Scriptにコードを記載して地図を表示できるようにします。 
 

1:name spaceの追加  

使用するクラスのname spaceを追加します。

using com.zdc.unity.zms.maps;
using com.zdc.unity.zms.maps.model;
using UnityEngine.UI

2:メンバ変数  

使用するメンバ変数を定義します。

    public ZDCMap zdcmap;
    public int width = 0;
    public int height = 0;
    public Texture2D maptexture;

3:認証設定  

StartメソッドでMapInitializerクラスのプロパティに認証情報を設定します。
Domainプロパティには、検証サーバのドメインを指定してください。(接続先について)
ConsumerKeyプロパティ, ConsumerSecretプロパティには、いつもナビAPI3.0のクライアントID, oauth認証秘密鍵を指定してください。
Proxy設定が必要な場合は、適宜Proxyプロパティを設定してください。

        MapInitializer.Domain = "test.core.its-mo.com";
        MapInitializer.ConsumerKey = "YOUR_CONSUMER_KEY";
        MapInitializer.ConsumerSecret = "YOUR_CONSUMER_SECRET";
        MapInitializer.Proxy = "";

4:テクスチャの作成  

Startメソッドでマップを描画するテクスチャを作成します。

        GameObject obj = GameObject.Find("Image");
        RectTransform rect = obj.GetComponent<RectTransform>();
        width = (int)rect.rect.width;
        height = (int)rect.rect.height;

        maptexture = new Texture2D(width, height, TextureFormat.RGB24, false);
        maptexture.filterMode = FilterMode.Trilinear;
        maptexture.wrapMode = TextureWrapMode.Clamp;
        maptexture.Apply();
        obj.GetComponent<Image>().sprite = Sprite.Create(maptexture, new Rect(0, 0, maptexture.width, maptexture.height), Vector2.zero);

5:Map初期化  

Startメソッドでマップタイプ(固定値:"labo")と初期カメラ位置を設定し、マップを初期化します。

        ZDCMapOptions option = new ZDCMapOptions();
        option.MapType = "labo";
        option.Camera = CameraPosition.builder().target(new LatLng(35.625494, 139.742054)).zoom(16).build();
        MapInitializer.Initialize(this, obj, width, height, maptexture.GetNativeTexturePtr(), option, OnReady);

6:Map初期化コールバック  

MapInitializer.Initializeのコールバックメソッドを定義します。
地図に関する操作はコールバックメソッドで受け取ったZDCMapインスタンスが必要になります。
下記サンプルでは現在位置アイコン画像の設定を行っています。

    void OnReady(ZDCMap map, int code)
    {
        if (map == null)
        {
            Debug.Log(string.Format("OnReady:{0}", code));
            Application.Quit();
            return;
        }

        zdcmap = map;

        // Set MyLocation Icon
        Texture2D icon = (Texture2D)Resources.Load("YOUR_MYLOCATION_ICON");
        zdcmap.SetMyLocationIcon(icon, 1);
        zdcmap.SetMyLocationEnabled(true);
        zdcmap.SetMyLocationAccuracyEnable(true);
    }

7:ビルド  

ここまでの手順を行うことで、UnityEditor(Windows,Mac), Android, iOSでのビルド及び実行が可能になります。
以下のような地図が表示されると設定完了です。
※現在位置アイコンは設定しなければ表示されません。

以下は上記サンプルコードの全体です。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using com.zdc.unity.zms.maps;
using com.zdc.unity.zms.maps.model;
using UnityEngine.UI;

public class MapScript : MonoBehaviour {

    public ZDCMap zdcmap;
    public int width = 0;
    public int height = 0;
    public Texture2D maptexture;

    // Use this for initialization
    void Start () {
        // Set Auth param
        MapInitializer.Domain = "test.core.its-mo.com";
        MapInitializer.ConsumerKey = "YOUR_CONSUMER_KEY";
        MapInitializer.ConsumerSecret = "YOUR_CONSUMER_SECRET";
        MapInitializer.Proxy = "";

        // Create Texture
        GameObject obj = GameObject.Find("Image");
        RectTransform rect = obj.GetComponent<RectTransform>();
        width = (int)rect.rect.width;
        height = (int)rect.rect.height;

        maptexture = new Texture2D(width, height, TextureFormat.RGB24, false);
        maptexture.filterMode = FilterMode.Trilinear;
        maptexture.wrapMode = TextureWrapMode.Clamp;
        maptexture.Apply();
        obj.GetComponent<Image>().sprite = Sprite.Create(maptexture, new Rect(0, 0, maptexture.width, maptexture.height), Vector2.zero);

        // Map Initialize
        ZDCMapOptions option = new ZDCMapOptions();
        option.MapType = "labo";
        option.Camera = CameraPosition.builder().target(new LatLng(35.625494, 139.742054)).zoom(16).build();
        MapInitializer.Initialize(this, obj, width, height, maptexture.GetNativeTexturePtr(), option, OnReady);
    }
	
    // Update is called once per frame
    void Update () {
		
    }


    void OnReady(ZDCMap map, int code)
    {
        if (map == null)
        {
            Debug.Log(string.Format("OnReady:{0}", code));
            Application.Quit();
            return;
        }

        zdcmap = map;


        // Set MyLocation Icon
        Texture2D pt1_icon_current = (Texture2D)Resources.Load("pt1_icon_current");
        zdcmap.SetMyLocationIcon(pt1_icon_current, 1);
        zdcmap.SetMyLocationEnabled(true);
        zdcmap.SetMyLocationAccuracyEnable(true);
    }
}