获取纬度和经度[Google Api和Yahoo Api]

时间:2012-11-20 09:13:18

标签: c#-4.0 google-maps-api-3 yahoo-api

我在c#.Net工作。我的要求是根据作为参数给出的地址,城市,州和邮政编码从api获取纬度和经度。

我在excel表中有350个商店的详细信息。最初我使用过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(”coordinates“)[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会出现什么问题。是否对大量商店的纬度和经度细节有任何限制。

1 个答案:

答案 0 :(得分:0)

我不确定这是否是您的示例问题,但Google Geocoding API V2 docs提到V2版本现已弃用:

  

注意:自2010年3月8日起,Google Maps Geocoding API Version 2已正式弃用.V2 API将继续有效至2013年3月8日。我们建议您将代码迁移到新的地理编码API。< / p>

您可以尝试切换到最新的Geocoding API V3。需要记住的一件事是,当您在Google地图的上下文中显示结果时,Google提及仅允许此服务。

如果雅虎服务提供您需要的数据,我会坚持下去。