예제 #1
0
        private void setCorner(SetCorner corner, float x, float y)
        {
            float lon_r = GoogleStaticMap.mercatorXtoLon_r(x);
            float lat_r = GoogleStaticMap.mercatorYtoLat_r(y);

            switch (corner)
            {
            case SetCorner.NE:
                NE_LatLon.setLatLon_rad(lat_r, lon_r);
                NW_LatLon.lat_r = lat_r;
                SE_LatLon.lon_r = lon_r;

                NE_Mercator.x = x;
                NE_Mercator.y = y;
                NW_Mercator.y = y;
                SE_Mercator.x = x;
                break;

            case SetCorner.SW:
                SW_LatLon.setLatLon_rad(lat_r, lon_r);
                NW_LatLon.lon_r = lon_r;
                SE_LatLon.lat_r = lat_r;

                SW_Mercator.x = x;
                SW_Mercator.y = y;
                NW_Mercator.x = x;
                SE_Mercator.y = y;
                break;

            default:
                throw new System.ArgumentException("Invalid corner request. Only NE and SW corners can be set explicity. NW and SE are set internally.", "original");
            }
        }
예제 #2
0
    public override void OnInspectorGUI()
    {
        GoogleStaticMap googleStaticMap = (GoogleStaticMap)target;

        DrawDefaultInspector();

        string helpMessage = "The Google Static Maps API lets you embed a Google Maps image on your web page without requiring JavaScript or any dynamic page loading. The Google Static Maps API service creates your map based on URL parameters sent through a standard HTTP request and returns the map as an image you can display on your web page.";

        EditorGUILayout.HelpBox(helpMessage, MessageType.Info);

        if (GUILayout.Button("Get a API key"))
        {
            Application.OpenURL("https://developers.google.com/maps/documentation/static-maps/");
        }

        if (GUILayout.Button("Visit Google Maps API - Google Developers"))
        {
            Application.OpenURL("https://developers.google.com/maps/");
        }

        if (GUILayout.Button("Visit API Credentials - Google Cloud Console"))
        {
            Application.OpenURL("https://console.cloud.google.com/apis/credentials");
        }
    }
예제 #3
0
    private GoogleStaticMap.MyPoint newCenterMercator(GoogleStaticMap map, GoogleStaticMap.MapRectangle.GetCorner corner)
    {
        Vector2 centerVec = map.getPositionOnMap(map.centerLatLon);
        Vector2 cornerVec = map.getPositionOnMap(map.mapRectangle.getCornerLatLon(corner));
        Vector2 newVec    = cornerVec + (cornerVec - centerVec);

        return(map.tileCenterMercator(map.getPositionOnMap(newVec)));
    }
예제 #4
0
    IEnumerator Start()
    {
        getMainMap().initialize();
        foreach (GameObject map in outerMaps)
        {
            getOuterMap(map).initialize();
        }

        yield return(StartCoroutine(player_loc._StartLocationService()));

        StartCoroutine(player_loc.RunLocationService());

        locationServicesIsRunning = player_loc.locServiceIsRunning;
        Debug.Log("Player loc from GameManager: " + player_loc.loc);

        GoogleStaticMap mainMap = getMainMap();

        mainMap.centerMercator = mainMap.tileCenterMercator(player_loc.loc);
        mainMap.DrawMap();

        mainMap.transform.localScale = Vector3.Scale(
            new Vector3(mainMap.mapRectangle.getWidthMeters(), mainMap.mapRectangle.getHeightMeters(), 1),
            new Vector3(mainMap.realWorldtoUnityWorldScale.x, mainMap.realWorldtoUnityWorldScale.y, 1));

        getOuterMap(outerMaps[0]).centerMercator = newCenterMercator(mainMap, NW);
        getOuterMap(outerMaps[1]).centerMercator = newCenterMercator(mainMap, NW, NE);
        getOuterMap(outerMaps[2]).centerMercator = newCenterMercator(mainMap, NE);
        getOuterMap(outerMaps[3]).centerMercator = newCenterMercator(mainMap, NE, SE);
        getOuterMap(outerMaps[4]).centerMercator = newCenterMercator(mainMap, SE);
        getOuterMap(outerMaps[5]).centerMercator = newCenterMercator(mainMap, SW, SE);
        getOuterMap(outerMaps[6]).centerMercator = newCenterMercator(mainMap, SW);
        getOuterMap(outerMaps[7]).centerMercator = newCenterMercator(mainMap, NW, SW);

        foreach (GameObject map in outerMaps)
        {
            getOuterMap(map).DrawMap();
        }

        for (int i = 0; i < outerMaps.Length; i++)
        {
            GameObject      map    = outerMaps[i];
            GoogleStaticMap mapMap = getOuterMap(map);
            map.transform.localScale = Vector3.Scale(
                new Vector3(mapMap.mapRectangle.getWidthMeters(), mapMap.mapRectangle.getHeightMeters(), 1F),
                new Vector3(mapMap.realWorldtoUnityWorldScale.x, mapMap.realWorldtoUnityWorldScale.y, 1F));
            setNewPos(i);
        }

        player.GetComponent <ObjectPosition>().setPositionOnMap(player_loc.loc);

        GameObject[] objectsOnMap = GameObject.FindGameObjectsWithTag("ObjectOnMap");

        foreach (GameObject obj in objectsOnMap)
        {
            obj.GetComponent <ObjectPosition>().setPositionOnMap();
        }
    }
예제 #5
0
    private void setNewPos(int index)
    {
        GameObject      map    = outerMaps[index];
        GoogleStaticMap mapMap = map.GetComponent <GoogleStaticMap>();
        Vector2         newPos = getOuterMap(mainMap).getPositionOnMap(mapMap.centerLatLon);
        float           yOff   = 0.001f * (2 - Mathf.Abs(index - 4));

        map.transform.position = new Vector3(newPos.x, yOff, newPos.y);
    }
예제 #6
0
 void onEnterScene(bool flag)
 {
     if (flag)
     {
         goog = new GoogleStaticMap();
         goog.initialize();
         goog.DrawMap();
         goog.DrawMapGUI();
     }
 }
예제 #7
0
 private void LoadFromDatabaseInDistance(List <QRCode> codes, string reply)
 {
     message.text = reply;
     if (codes != null)
     {
         foreach (var code in codes)
         {
             float distance = GoogleStaticMap.haversine_dist(code.GeoPoint, GetPlayerLocation());
             if (distance <= resolution_distance)
             {
                 Debug.Log("Enenmy found at location " + code.GeoPoint.ToString());
             }
         }
         DisplayEnemies(codes);
     }
 }
예제 #8
0
    private bool isOnMap()
    {
        GoogleStaticMap mainMap = GameManager.Instance.getMainMap();

        return(mainMap.centerMercator.Equals(mainMap.tileCenterMercator(pos)));
    }
예제 #9
0
    void Update()
    {
        if (!locationServicesIsRunning)
        {
            mapLoc.text = "Location Service is not enabled.\nLatitude: " + player_loc.loc.lat_d + ", Longitude: " + player_loc.loc.lon_d;
            //TODO: Show location service is not enabled error.
            return;
        }

        // playerGeoPosition = getMainMapMap ().getPositionOnMap(new Vector2(player.transform.position.x, player.transform.position.z));
        playerGeoPosition = new GeoPoint();
        // GeoPoint playerGeoPosition = getMainMapMap ().getPositionOnMap(new Vector2(player.transform.position.x, player.transform.position.z));
        if (playerStatus == PlayerStatus.TiedToDevice)
        {
            playerGeoPosition = player_loc.loc;
            player.GetComponent <ObjectPosition>().setPositionOnMap(playerGeoPosition);
        }
        else if (playerStatus == PlayerStatus.FreeFromDevice)
        {
            playerGeoPosition = getOuterMap(mainMap).getPositionOnMap(new Vector2(player.transform.position.x, player.transform.position.z));
        }

        GoogleStaticMap.MyPoint tileCenterMercator = getOuterMap(mainMap).tileCenterMercator(playerGeoPosition);
        mapLoc.text = tileCenterMercator.ToString() + "\nLatitude: " + player_loc.loc.lat_d + ", Longitude: " + player_loc.loc.lon_d;

        if (!getOuterMap(mainMap).centerMercator.isEqual(tileCenterMercator))
        {
            // Re-add original map tile system, have outer maps generate each time around the current main map

            newMap.SetActive(true);
            GoogleStaticMap newMapMap = getNewMap();
            newMapMap.initialize();
            newMapMap.centerMercator = tileCenterMercator;
            newMapMap.DrawMap();
            newMapMap.transform.localScale = Vector3.Scale(
                new Vector3(newMapMap.mapRectangle.getWidthMeters(), newMapMap.mapRectangle.getHeightMeters(), 1),
                new Vector3(newMapMap.realWorldtoUnityWorldScale.x, newMapMap.realWorldtoUnityWorldScale.y, 1));

            Vector2 tempPosition = getMainMap().getPositionOnMap(newMapMap.centerLatLon);
            newMap.transform.position = new Vector3(tempPosition.x, 0, tempPosition.y);

            GameObject temp = newMap;
            newMap  = mainMap;
            mainMap = temp;

            foreach (GameObject map in outerMaps)
            {
                getOuterMap(map).initialize();
            }

            getOuterMap(outerMaps[0]).centerMercator = newCenterMercator(getOuterMap(mainMap), NW);
            getOuterMap(outerMaps[1]).centerMercator = newCenterMercator(getOuterMap(mainMap), NW, NE);
            getOuterMap(outerMaps[2]).centerMercator = newCenterMercator(getOuterMap(mainMap), NE);
            getOuterMap(outerMaps[3]).centerMercator = newCenterMercator(getOuterMap(mainMap), NE, SE);
            getOuterMap(outerMaps[4]).centerMercator = newCenterMercator(getOuterMap(mainMap), SE);
            getOuterMap(outerMaps[5]).centerMercator = newCenterMercator(getOuterMap(mainMap), SW, SE);
            getOuterMap(outerMaps[6]).centerMercator = newCenterMercator(getOuterMap(mainMap), SW);
            getOuterMap(outerMaps[7]).centerMercator = newCenterMercator(getOuterMap(mainMap), NW, SW);

            foreach (GameObject map in outerMaps)
            {
                getOuterMap(map).DrawMap();
            }

            for (int i = 0; i < outerMaps.Length; i++)
            {
                GameObject      map    = outerMaps[i];
                GoogleStaticMap mapMap = getOuterMap(map);
                map.transform.localScale = Vector3.Scale(
                    new Vector3(mapMap.mapRectangle.getWidthMeters(), mapMap.mapRectangle.getHeightMeters(), 1F),
                    new Vector3(mapMap.realWorldtoUnityWorldScale.x, mapMap.realWorldtoUnityWorldScale.y, 1F));
                setNewPos(i);
            }
        }
        if (getMainMap().isDrawn&& !mainMap.GetComponent <MeshRenderer>().enabled)
        {
            mainMap.GetComponent <MeshRenderer>().enabled = true;
            newMap.GetComponent <MeshRenderer>().enabled  = false;
            newMap.SetActive(false);
        }
    }