Esempio n. 1
0
    private void OnElevationRequestComplete(string response)
    {
        const int elevationDataResolution = 32;

        try
        {
            bool isFirstResponse = false;
            if (elevationData == null)
            {
                elevationData   = new short[elevationDataResolution, elevationDataResolution];
                isFirstResponse = true;
            }
            Array ed = elevationData;

            if (OnlineMapsBingMapsElevation.ParseElevationArray(response, OnlineMapsBingMapsElevation.Output.json, ref ed))
            {
                elevationX1         = elevationRequestX1;
                elevationY1         = elevationRequestY1;
                elevationW          = elevationRequestW;
                elevationH          = elevationRequestH;
                elevationDataWidth  = elevationDataResolution;
                elevationDataHeight = elevationDataResolution;

                UpdateMinMax();
                if (OnElevationUpdated != null)
                {
                    OnElevationUpdated();
                }

                control.UpdateControl();
            }
            else
            {
                if (isFirstResponse)
                {
                    elevationX1         = elevationRequestX1;
                    elevationY1         = elevationRequestY1;
                    elevationW          = elevationRequestW;
                    elevationH          = elevationRequestH;
                    elevationDataWidth  = elevationDataResolution;
                    elevationDataHeight = elevationDataResolution;
                }
                Debug.LogWarning(response);
                if (OnElevationFails != null)
                {
                    OnElevationFails(response);
                }
            }
            elevationRequest = null;
        }
        catch (Exception exception)
        {
            Debug.Log(exception.Message);
            if (OnElevationFails != null)
            {
                OnElevationFails(exception.Message);
            }
        }
        map.Redraw();
    }
        /// <summary>
        /// On request Complete
        /// </summary>
        /// <param name="response">Response</param>
        private void OnComplete(string response)
        {
            // Log response
            Debug.Log(response);

            // You have two options:
            // 1. Load the result object. It's slower, but you have the entire object.
            // 2. Load the elevation data into array. It's fast. Supports one-dimensional and two-dimensional arrays.

            // 1. Load result object
            OnlineMapsBingMapsElevationResult result = OnlineMapsBingMapsElevation.GetResult(response, OnlineMapsBingMapsElevation.Output.json);

            // Log elevations length
            if (result != null)
            {
                Debug.Log(result.resourceSets[0].resources[0].elevations.Length);
            }
            else
            {
                Debug.Log("Result is null");
            }

            // 2. Load the elevation data into two-dimensional array.
            short[,] elevations = new short[32, 32];
            Array ea = elevations;

            OnlineMapsBingMapsElevation.ParseElevationArray(response, OnlineMapsBingMapsElevation.Output.json, ref ea);

            // Log first elevation value
            Debug.Log(elevations[0, 0]);
        }
    private void OnTileDownloaded(Tile tile, OnlineMapsBingMapsElevation request)
    {
        if (request.status == OnlineMapsQueryStatus.error)
        {
            Debug.Log("Download error");
            return;
        }

        if (OnDownloadSuccess != null)
        {
            OnDownloadSuccess(tile, request.GetWWW());
        }

        short[,] elevations = new short[32, 32];
        Array ed = elevations;

        if (OnlineMapsBingMapsElevation.ParseElevationArray(request.response, OnlineMapsBingMapsElevation.Output.json, ref ed))
        {
            for (int y = 0; y < 16; y++)
            {
                for (int x = 0; x < 32; x++)
                {
                    short t = elevations[x, y];
                    elevations[x, y]      = elevations[x, 31 - y];
                    elevations[x, 31 - y] = t;
                }
            }

            SetElevationToCache(tile, elevations);
            SetElevationData(tile, elevations);
        }
    }
        private void Start()
        {
            // Get the coordinates of the map corners
            double tlx, tly, brx, bry;

            OnlineMaps.instance.GetCorners(out tlx, out tly, out brx, out bry);

            // Ceate a new request and subscribe to OnComplete event
            OnlineMapsBingMapsElevation.GetElevationByBounds(key, tlx, tly, brx, bry, 32, 32).OnComplete += OnComplete;
        }
Esempio n. 5
0
    public override void CancelCurrentElevationRequest()
    {
        waitSetElevationData = false;

        if (elevationRequest != null)
        {
            elevationRequest.Destroy();
            elevationRequest = null;
        }
    }
    public override void StartDownloadElevationTile(Tile tile)
    {
        if (TryLoadFromCache(tile))
        {
            return;
        }

        double lx, ty, rx, by;

        map.projection.TileToCoordinates(tile.x, tile.y, tile.zoom, out lx, out ty);
        map.projection.TileToCoordinates(tile.x + 1, tile.y + 1, tile.zoom, out rx, out @by);
        OnlineMapsBingMapsElevation request = OnlineMapsBingMapsElevation.GetElevationByBounds(OnlineMapsKeyManager.BingMaps(), lx, ty, rx, @by, tileWidth, tileHeight);

        request.OnFinish += r => OnTileDownloaded(tile, request);
    }
Esempio n. 7
0
 public void StartDownloadElevation(double sx, double sy, double ex, double ey)
 {
     elevationRequest             = OnlineMapsBingMapsElevation.GetElevationByBounds(bingAPI, sx, sy, ex, ey, 32, 32);
     elevationRequest.OnComplete += OnElevationRequestComplete;
 }