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); } }
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 (); }
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; }
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 }