コード例 #1
0
 public void GetResDetail(string resName, GetResDetailDel callBackEvent)
 {
     StartCoroutine(GetDetail(resName, callBackEvent));
 }
コード例 #2
0
    IEnumerator GetDetail(string resName, GetResDetailDel callBackEvent)
    {
        Details d = null;

        if (resDetailDict.TryGetValue(resName, out d))
        {
            if (!d.visited)                                     // 如果這間餐廳還沒有向Google要過資料
            {
                StringBuilder url = new StringBuilder();
                url.Append("https://maps.googleapis.com/maps/api/place/details/json?placeid=")
                .Append(d.placeID).Append("&language=zh-TW&key=").Append(googlePlaceKey);

                #region ======= 取得餐廳的 Details =======
                WWW www = new WWW(url.ToString());
                yield return(www);

                JObject responce = JObject.Parse(www.text);

                #region ------------- 解析 Json -------------
                // 是否永遠關閉
                if (responce["result"]["permanently_closed"] != null)
                {
                    d.permanentlyClosed = true;
                }
                // 取得地址
                d.address = responce["result"].Value <string>("formatted_address");
                if (d.address.Length > 0)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append(d.address[0]);
                    //讓數字和中文字之間添加空白,避免一組數字被從中切開(ex. 631 -> 6 換行 31)。
                    for (int j = 1; j < d.address.Length; j++)
                    {
                        char c         = d.address[j];
                        char pc        = d.address[j - 1];
                        bool isNumber  = char.IsNumber(c);
                        bool wasNumber = char.IsNumber(pc);
                        if (isNumber != wasNumber)
                        {
                            sb.Append(" ");
                        }
                        sb.Append(c);
                    }
                    d.address = sb.ToString();
                }

                // 取得電話
                d.phoneNum = responce["result"].Value <string>("formatted_phone_number");
                // 取得營業時間
                if (responce["result"]["opening_hours"] != null && responce["result"]["opening_hours"]["weekday_text"] != null)
                {
                    JArray weekdayArray = (JArray)responce["result"]["opening_hours"]["weekday_text"];
                    for (int j = 0; j < weekdayArray.Count; j++)
                    {
                        d.openingHours.Add(weekdayArray[j].Value <string>());
                    }
                }
                // 取得是否營業中
                if (responce["result"]["opening_hours"] != null && responce["result"]["opening_hours"]["open_now"] != null)
                {
                    if (responce["result"]["opening_hours"]["open_now"].Value <bool>())
                    {
                        d.openNow = 0;
                    }
                    else
                    {
                        d.openNow = 1;
                    }
                }
                else
                {
                    d.openNow = 2;
                }

                // 取得評價分數
                d.rating = responce["result"].Value <float>("rating");
                // 取得評價留言
                JArray reviewArray = (JArray)responce["result"]["reviews"];
                if (reviewArray != null)
                {
                    for (int j = 0; j < reviewArray.Count; j++)
                    {
                        Reviews review        = new Reviews();
                        JObject reviewJObject = (JObject)reviewArray[j];
                        review.name   = reviewJObject.Value <string>("author_name");
                        review.rating = reviewJObject.Value <int>("rating");
                        review.text   = reviewJObject.Value <string>("text") + "\n";
                        review.time   = new DateTime(1970, 1, 1).AddSeconds(reviewJObject.Value <int>("time"));
                        d.reviews.Add(review);
                    }
                }
                #endregion -------------------------
                #endregion =================================
                d.visited = true;
            }
        }

        if (callBackEvent != null)
        {
            callBackEvent(d);
        }
    }