예제 #1
0
    public IEnumerator WaitAddressData()
    {
        yield return www2;

        string fullText = www2.text;
        string delimStr = "\"lat\" : ";
        string[] stringArray;
        //char[] delim = delimStr.ToCharArray ();

        stringArray = fullText.Split(new string[] {delimStr}, System.StringSplitOptions.None);

        //got an error with bad internet connection... should do a check here
        fullText = stringArray[1];

        delimStr = "},";
        //char[] delim = delimStr.ToCharArray ();

        stringArray = fullText.Split(new string[] {delimStr}, System.StringSplitOptions.None);
        fullText = stringArray[0];
        stringArray = fullText.Split(',');

        string latStr = stringArray[0];
        /*
        string longStr = stringArray [1].Substring (23, stringArray [1].Length - 24);
            longStr = longStr.Trim();
        */
        string longStr = stringArray [1].Split(new string[] {"\"lng\" :"}, System.StringSplitOptions.None)[1];
        longStr = longStr.Trim();
        print (latStr+", "+longStr);
        G_LatLng latlong = new G_LatLng (float.Parse (latStr), float.Parse (longStr));
        print ("LatPercent: "+((latlong.lat - latTop) / latHeight)*-1 + ", lat:"+latlong.lat+", latTop:"+latTop+", latBottom:"+latBottom+", LongPercent:"+(latlong.lng - longLeft)/longWidth);
        arrayOfLatLong [arrayOfAddressesIndex] = latlong;

        arrayOfAddressesIndex++;
        if (arrayOfAddressesIndex < arrayOfAddresses.Length) {
            loadNextAddress();
        }
        else{
            print("done loading lat long, loaded:"+arrayOfAddressesIndex );
            print (pins.Length+"pins.Length");

            string tempStr = "";

            if (arrayOfLatLong.Length < 2)
            {
                //close loading screen
                mapLoadingCanvas.SetActive(false);
                yield break;
            }

            //for(var i = 0; i<pins.Length; i++)
            for(var i = 0; i<arrayOfAddressesIndex-1; i++)  //out of range error with prior with some zip codes
            {
                print("latlongi "+i);
                float tempLatPercent = ((arrayOfLatLong [i+1].lat - latTop) / latHeight)*-1;
                float tempLongPercent = ((arrayOfLatLong [i+1].lng - longLeft)/longWidth) +1;

                tempStr += "<img src='pin.png' style='left:"+tempLongPercent*100 + "%; top:" + tempLatPercent*100 + "%;' />  ";

                Vector3 tempPos = new Vector3 (-tempLongPercent*10+5 , .2f, tempLatPercent*10-5);
                //Vector3 tempPos = new Vector3 (-5 , 5, 81f);

                pins[i].transform.localPosition = tempPos;

                pins[i].GetComponent<Renderer>().enabled = true;
                //pins[i].transform.Translate(-5 , 5, 81f);
                /*
                float initX = iniRef.x;
                float initZ = iniRef.z;

                float lon = arrayOfLatLong [i+1].lng;
                float lat = arrayOfLatLong [i+1].lat;

                float height = 100f;
                float scaleX = .1f;
                float scaleY = 1f;
                float scaleZ = 1f;

                pins[i].transform.position = new Vector3(((lon * 20037508.34f) / 18000) - initX, height / 100, ((Mathf.Log(Mathf.Tan((90 + lat) * Mathf.PI / 360)) / (Mathf.PI / 180)) * 1113.19490777778f) - initZ);

                //Set object orientation
                Vector3 tmp = pins[i].transform.eulerAngles;
                tmp.y = 180f;
                pins[i].transform.eulerAngles = tmp;

                //Set local object scale
                if(pins[i].transform.localScale != Vector3.zero)
                    pins[i].transform.localScale = new Vector3(scaleX, scaleY, scaleZ);
                    */
            }
            print(pins[0].transform.parent.transform.localScale+ ".... localScale");

            //print (tempStr);
            //float tempLat = 40.843339f;
            //float tempLon = -74.153356f;
            //getMap (tempLat, tempLon);

            //close loading screen
            mapLoadingCanvas.SetActive(false);
        }
    }
예제 #2
0
    IEnumerator loadMapFromZip()
    {
        yield return www3;

        string fullText = www3.text;
        string delimStr = "location";
        string[] stringArray;

        stringArray = fullText.Split(new string[] {delimStr}, System.StringSplitOptions.None);

        if (stringArray.Length > 2)
        {
            fullText = stringArray [1];
        }
        else
        {
            print("Error with Zip code");

            //close loading screen
            mapLoadingCanvas.SetActive(false);
            NativeToolkit.ShowAlert("Invalid Zip Code","The Zip Code that was provided was invalid. " +
                " Please try again.  /n If this is indeed an actual zip code, we apologize as our servers " +
                "might be down at the moment");
            yield break;
        }

        delimStr = "\"lat\" : ";

        stringArray = fullText.Split(new string[] {delimStr}, System.StringSplitOptions.None);

        fullText = stringArray[1];

        delimStr = "},";

        stringArray = fullText.Split(new string[] {delimStr}, System.StringSplitOptions.None);
        fullText = stringArray[0];
        stringArray = fullText.Split(',');

        string latStr = stringArray[0];

        string longStr = stringArray [1].Split(new string[] {"\"lng\" :"}, System.StringSplitOptions.None)[1];
        longStr = longStr.Trim();
        print (latStr+", "+longStr);
        G_LatLng latlong = new G_LatLng (float.Parse (latStr), float.Parse (longStr));

        float[] latLongs = getCorners (new G_LatLng (latlong.lat, latlong.lng), zoom, 640f, 640f);

        latTop =  -latLongs [0];
        longLeft =  latLongs [1];
        latHeight = latTop - latLongs [2];
        longWidth = longLeft - latLongs [3];
        latBottom = -latLongs [2];

        getMap (latlong.lat, latlong.lng);

        for(var i = 0; i<pins.Length; i++)
        {
            pins[i].GetComponent<Renderer>().enabled = false;
        }
        loadStores ();
    }
예제 #3
0
        public G_Point fromLatLngToPoint(G_LatLng latLng)
        {
            //$me = $this;
            //fromLatLngToPoint(G_LatLng latLng, G_Point opt_point=null
            //G_Point point = (opt_point!=null) ? opt_point : new G_Point(0,0);
            G_Point point =  new G_Point(0,0);

            G_Point origin = pixelOrigin_;
            point.x = origin.x + latLng.lng * pixelsPerLonDegree_;
            // NOTE(appleton): Truncating to 0.9999 effectively limits latitude to
            // 89.189.  This is about a third of a tile past the edge of the world tile.
            float siny = bound(Mathf.Sin(degreesToRadians(latLng.lat)), -0.9999f, 0.9999f);
            point.y = origin.y + 0.5f * Mathf.Log((1 + siny) / (1 - siny)) * -pixelsPerLonRadian_;
            return point;
        }
예제 #4
0
    float[] getCorners(G_LatLng center, float zoom, float mapWidth, float mapHeight)
    {
        float scale = Mathf.Pow(2, zoom);
        MercatorProjection proj = new MercatorProjection();

        G_Point centerPx = proj.fromLatLngToPoint(center);
        //G_LatLng centerPx = new G_LatLng (0, 0);
        G_Point SWPoint = new G_Point(centerPx.x-(mapWidth/2)/scale, centerPx.y+(mapHeight/2)/scale);
        G_LatLng SWLatLon = proj.fromPointToLatLng(SWPoint);
        G_Point NEPoint = new G_Point(centerPx.x+(mapWidth/2)/scale, centerPx.y-(mapHeight/2)/scale);
        G_LatLng NELatLon = proj.fromPointToLatLng(NEPoint);
        return new float[]{NELatLon.lat,
             NELatLon.lng,
             -SWLatLon.lat,
            SWLatLon.lng}; // north east south west
    }