VB.NET地理编码

时间:2017-09-01 09:38:37

标签: vb.net geocoding

以下代码在给出地址时成功返回纬度和经度。但我想知道它每天可以使用多少次。在我的应用程序中,我想只是将坐标存储在数据库中,并在MAP中使用它们,而不是谷歌地图。下面的代码使用url,我是否必须使用webservice和API密钥实现?我对谷歌地图api的政策和使用条款感到困惑。如果有人能回答这些问题,我将感激不尽。

 Dim address = "Κατεχάκη 60, Αθήνα"
        Dim requestUri = String.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false", Uri.EscapeDataString(address))

        Dim request = WebRequest.Create(requestUri)
        Dim response = request.GetResponse()
        Dim xdoc = XDocument.Load(response.GetResponseStream())

        Dim result = xdoc.Element("GeocodeResponse").Element("result")
        Dim locationElement = result.Element("geometry").Element("location")
        Dim lat = locationElement.Element("lat")
        Dim lng = locationElement.Element("lng")

1 个答案:

答案 0 :(得分:0)

如评论中所述。您可以找到使用限制here

对于您的代码,我建议您在请求中添加UserAgent标头和其他一些标头,并使用使用语句作为响应对象。

Dim address = "Κατεχάκη 60, Αθήνα"
Dim requestUri = String.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false", Uri.EscapeDataString(address))

Dim request As HttpWebRequest = WebRequest.Create(requestUri)
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0"
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
request.AutomaticDecompression = DecompressionMethods.GZip Or DecompressionMethods.Deflate
request.Headers.Add("Upgrade-Insecure-Requests", "1")
Using resp As HttpWebResponse = request.GetResponse()
    Using respStrm = resp.GetResponseStream()
        Dim xdoc = XDocument.Load(respStrm)
        Dim result = xdoc.Element("GeocodeResponse").Element("result")
        Dim locationElement = result.Element("geometry").Element("location")
        Dim lat = locationElement.Element("lat")
        Dim lng = locationElement.Element("lng")
    End Using
End Using