Получите широту и долготу [Google Api и Yahoo Api]

Я работаю в С# .Net. Мое требование - получить широту и долготу от API на основе адреса, города, штата и почтового индекса, которые были указаны в качестве параметра.

У меня есть информация о 350 магазинах на листе Excel. Первоначально я использовал Google API.

if (strAdd != "" && strCity != "" && strState != "" && strZip != "" && strStoreNo != "")
                {
                    Address = strAdd.Trim() + "," + strCity.Trim() + "," + strState.Trim() + "," + strZip.Trim();
                    string routeReqUrl = "http://maps.google.com/maps/geo?q={0}&output=xml&oe=utf8&sensor=true_or_false&key={1}";
                    string url = string.Format(routeReqUrl, Address.Replace(' ', '+'), "ABQIAAAA5rV-auhZekuhPKBTkuTC3hSAmVUytQSqQDODadyYeWY4ZYaVyRRv4thyrzzOQ7AMUl_hIjoG8LomGA");
                    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                    req.Method = "GET";
                    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
                    Stream respStream = resp.GetResponseStream();
                    XmlDocument xDoc = new XmlDocument();
                    xDoc.Load(respStream);
                    if (xDoc.GetElementsByTagName("coordinates")[0].InnerText.Contains(","))
                    {
                        string[] coordinates = xDoc.GetElementsByTagName("coordinates")[0].InnerText.Split(',');
                        string Latitude = coordinates[1];
                        string Longtitude = coordinates[0];

                        Logger.Log.Debug("[Latitude and Longitude] " + " Store - No " + strStoreNo + " Addr Line 1 " + strAdd + " Latitude " + Latitude + " Longitude " + Longtitude);
                    }
                }

В приведенном выше коде только для 10–15 магазинов я могу получить данные о широте и долготе. После этого я получаю ошибку ссылки на объект в "(xDoc.GetElementsByTagName("координаты")[0]..........".

После этого я попробовал использовать Yahoo API, я использую тот же лист Excel, в котором было 350 магазинов.

dsxml.ReadXml("http://where.yahooapis.com/geocode?appid=capelinks&location=" + Address + "&Geocode=Geocode");
                    if (dsxml.Tables[0].Rows.Count > 0)
                    {
                        if (dsxml.Tables[1].TableName == "Result")
                        {
                            string Latitude = dsxml.Tables[1].Rows[0]["Latitude"].ToString();
                            string Longtitude = dsxml.Tables[1].Rows[0]["Longitude"].ToString();
                            Logger.Log.Debug("[Latitude and Longitude] " + " Store - No " + strStoreNo + " Addr Line 1 " + strAdd + " Latitude " + Latitude + " Longitude " + Longtitude);
                        }
                    }

Здесь он обрабатывает все 350 сохранений правильно, без ошибок.

В чем будет проблема с google api. существуют ли какие-либо ограничения на получение сведений о широте и долготе для большого количества магазинов.


person RobinHood    schedule 20.11.2012    source источник


Ответы (1)


Я не уверен, что это проблема вашего примера, но документы Google Geocoding API V2 упомяните, что версия V2 устарела:

Примечание. API Google Maps Geocoding версии 2 официально объявлен устаревшим 8 марта 2010 г. API версии 2 будет продолжать работать до 8 марта 2013 г. Мы рекомендуем вам перенести свой код на новый API геокодирования.

Вы можете попробовать перейти на последнюю версию Geocoding API V3. Следует иметь в виду, что в терминах Google упоминается, что эта служба разрешается только при отображении результатов в контексте карты Google.

Если сервис Yahoo предоставляет нужные вам данные, я бы придерживался их.

person BrianC    schedule 19.12.2012