如何在谷歌地图中提前从地址字符串中获取GLatLng对象?

发布于 2024-09-15 12:10:31 字数 166 浏览 5 评论 0原文

我想提前在谷歌地图中获取 latlng 对象。基本上我的 json 结果是返回地址数组,我需要将其转换为 glatlng 以用于标记。但如果我将使用 GeoCoder 对象,那么它将发送我不想要的异步请求。

除了 GeoCoder 对象之外,还有其他方法可以将地址字符串转换为 GLatLng 对象吗?

I want to get latlng object in google maps in advance. Basically my json result is returning array of address which I need to convert to glatlng to use for markers. But if i will use GeoCoder object then it will send asynch request which I don't want.

Is there any way other than GeoCoder object to convert an address string to GLatLng object?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独行侠 2024-09-22 12:10:31

您可以查看任何对地图 API 的查询返回的 json 对象。

然后,您使用 system.web.extensions 中的 json 序列化器将 json 序列化为必须根据手动分析的 JSON 响应创建的类。

请注意,您可以通过将其添加到 http Web 请求来获取本地化语言返回结果:

    wrHTTPrequest.UserAgent = "Lord Vishnu/Transcendental (Vaikuntha;Supreme Personality of Godness)"
    wrHTTPrequest.Headers.Add("Accept-Language:" + System.Globalization.CultureInfo.CurrentCulture.Name)
    wrHTTPrequest.ContentType = "text/html"

编辑:
该示例来自我的一个文件(删除所有 SharpMap.Map 内容,它需要外部程序集。

版权所有 (C) 2010 Me。特此授予将其用于
善良,而非邪恶 - 如果您将我添加到您的感谢名单中。

Public Class _Default
    Inherits System.Web.UI.Page

    Protected smmGlobalMap As SharpMap.Map

    'http://www.java2s.com/Code/VB/Development/ListallCultureInformation.htm
    Public Sub listcultures()
        'Dim x As System.DateTime = DateTime.Now
        'Response.Write(x.ToString("HH':'mm':'ss MMM d', 'yyyy 'PST'", New System.Globalization.CultureInfo("zh-CN", False)))
        Dim info As System.Globalization.CultureInfo
        For Each info In System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures)
            Response.Write("Deutsch: " + info.DisplayName + " English: " + info.EnglishName + " Native: " + info.NativeName + " Name: " + info.Name + " Codepage: " + info.TextInfo.ANSICodePage.ToString() + "<br />")
            If Not info.IsNeutralCulture Then
                'item.SubItems.Add(amount.ToString("C", info.NumberFormat))
                'item.SubItems.Add(dateNow.ToString("d", info.DateTimeFormat))
            End If
        Next

    End Sub


    Public Sub GeoCodeTest()
        'Dim GeoCodeResponse As Google.Maps.JSON.cGeoCodeResponse = GetJSONgeodata("San Bernardino, Switzerland")
        'Dim GeoCodeResponse As Google.Maps.JSON.cGeoCodeResponse = GetJSONgeodata("北京")
        'Dim GeoCodeResponse As Google.Maps.JSON.cGeoCodeResponse = GeoCodeRequest("San Bernardino, Switzerland")
        Dim GeoCodeResponse As Google.Maps.JSON.cGeoCodeResponse = GeoCodeRequest("北京")
        Response.Write(Seri(GeoCodeResponse))
        Response.Write("<br /><br /><br />")
        Response.Write(GeoCodeResponse.results(0).address_components(0).long_name)
        Response.Write("<br /><br />")
        Response.Write(GeoCodeResponse.results(0).geometry.location.lat.ToString)
        Response.Write("<br />")
        Response.Write(GeoCodeResponse.results(0).geometry.location.lng.ToString)
        Response.Write("<br /><br /><br />")
        Response.Write(GeoCodeResponse.results(0).geometry.viewport.northeast.lat.ToString)
        Response.Write("<br />")
        Response.Write(GeoCodeResponse.results(0).geometry.viewport.northeast.lng.ToString)
        Response.Write("<br /><br /><br />")
    End Sub


    Public Function Seri(ByRef GeoData As Google.Maps.JSON.cGeoCodeResponse) As String
        Dim jssJSONserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
        Dim CommentData As New Google.Maps.JSON.cGeoCodeResponse
        Dim str As String = jssJSONserializer.Serialize(GeoData)
        Return str
    End Function


    ' http://www.codeproject.com/KB/IP/httpwebrequest_response.aspx
    ' http://www.linuxhowtos.org/C_C++/socket.htm
    ' http://en.wikipedia.org/wiki/List_of_countries_by_GDP_(PPP)_per_capita
    Public Function GeoCodeRequest(ByRef strAddress As String) As Google.Maps.JSON.cGeoCodeResponse
        strAddress = System.Web.HttpUtility.UrlEncode(strAddress) ' Add reference to System.Web
        Dim strURL As String = "http://maps.google.com/maps/api/geocode/json?address=" + strAddress + "&sensor=false"

        ' *** Establish the request
        Dim wrHTTPrequest As System.Net.HttpWebRequest = DirectCast(System.Net.WebRequest.Create(strURL), System.Net.HttpWebRequest)

        ' *** Set properties
        wrHTTPrequest.Method = "GET"
        wrHTTPrequest.Timeout = 10000 ' 10 secs
        wrHTTPrequest.UserAgent = "Lord Vishnu/Transcendental (Vaikuntha;Supreme Personality of Godness)"
        wrHTTPrequest.Headers.Add("Accept-Language:" + System.Globalization.CultureInfo.CurrentCulture.Name)
        wrHTTPrequest.ContentType = "text/html"


        ' *** Retrieve request info headers
        Dim wrHTTPresponse As System.Net.HttpWebResponse = DirectCast(wrHTTPrequest.GetResponse(), System.Net.HttpWebResponse)

        ' My Windows' default code-Page
        Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(1252)

        ' Google's code-page
        enc = System.Text.Encoding.UTF8

        Dim srResponseStream As New System.IO.StreamReader(wrHTTPresponse.GetResponseStream(), enc)

        Dim strJSONencodedResponse As String = srResponseStream.ReadToEnd()
        wrHTTPresponse.Close()
        srResponseStream.Close()

        If String.IsNullOrEmpty(strJSONencodedResponse) Then
            Return Nothing
        End If

        Dim jssJSONserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
        Dim GeoCodeResponse As New Google.Maps.JSON.cGeoCodeResponse
        GeoCodeResponse = jssJSONserializer.Deserialize(Of Google.Maps.JSON.cGeoCodeResponse)(strJSONencodedResponse)

        Return GeoCodeResponse
    End Function




    Public Function GetJSONgeodata(ByVal strAddress As String) As Google.Maps.JSON.cGeoCodeResponse
        'strAddress = "Zurich, Switzerland"
        strAddress = System.Web.HttpUtility.UrlEncode(strAddress) ' Add reference to System.Web
        Dim strURL As String = "http://maps.google.com/maps/api/geocode/json?address=" + strAddress + "&sensor=false"


        Dim wwwClient As Net.WebClient = Nothing
        Dim strJSONtranslatedText As String = Nothing

        Try
            'http://www.stevetrefethen.com/blog/UsingGoogleMapsforGeocodinginC.aspx
            wwwClient = New Net.WebClient()
            wwwClient.Encoding = System.Text.Encoding.UTF8
            strJSONtranslatedText = wwwClient.DownloadString(strURL)
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            wwwClient.Dispose()
            wwwClient = Nothing
        End Try
        If String.IsNullOrEmpty(strJSONtranslatedText) Then
            Return Nothing
        End If

        Dim jssJSONserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
        Dim GeoCodeRespone As New Google.Maps.JSON.cGeoCodeResponse
        GeoCodeRespone = jssJSONserializer.Deserialize(Of Google.Maps.JSON.cGeoCodeResponse)(strJSONtranslatedText)

        Return GeoCodeRespone
    End Function



    ' http://sharpmap.codeplex.com/wikipage?title=CustomTheme
    ' http://sharpmap.codeplex.com/Thread/View.aspx?ThreadId=28205
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'GeoCodeTest()
        listcultures()

        'Set up the map
        smmGlobalMap = InitializeMap(New System.Drawing.Size(CInt(imgMap.Width.Value), CInt(imgMap.Height.Value)))
        If Page.IsPostBack Then
            'Page is post back. Restore center and zoom-values from viewstate
            smmGlobalMap.Center = DirectCast(ViewState("mapCenter"), SharpMap.Geometries.Point)
            smmGlobalMap.Zoom = CDbl(ViewState("mapZoom"))
        Else
            'This is the initial view of the map. Zoom to the extents of the map:
            smmGlobalMap.ZoomToExtents()
            'Save the current mapcenter and zoom in the viewstate
            ViewState.Add("mapCenter", smmGlobalMap.Center)
            ViewState.Add("mapZoom", smmGlobalMap.Zoom)
            'Create the map
            CreateMap()
        End If
        DistanceAltstRebstein()
    End Sub


    Protected Sub imgMap_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs)
        'Set center of the map to where the client clicked
        smmGlobalMap.Center = SharpMap.Utilities.Transform.MapToWorld(New System.Drawing.Point(e.X, e.Y), smmGlobalMap)
        'Set zoom value if any of the zoom tools were selected
        If rblMapTools.SelectedValue = "0" Then
            'Zoom in
            smmGlobalMap.Zoom = smmGlobalMap.Zoom * 0.5
        ElseIf rblMapTools.SelectedValue = "1" Then
            'Zoom out
            smmGlobalMap.Zoom = smmGlobalMap.Zoom * 2
        End If
        'Save the new map's zoom and center in the viewstate
        ViewState.Add("mapCenter", smmGlobalMap.Center)
        ViewState.Add("mapZoom", smmGlobalMap.Zoom)
        'Create the map
        CreateMap()
        Response.Write("X: " + e.X.ToString + " Y: " + e.Y.ToString + "<br /><br />")
        Response.Write("Longitude: " + smmGlobalMap.Center.X.ToString + " Latitude: " + smmGlobalMap.Center.Y.ToString + "<br />")

    End Sub


    ' http://sharpmapv2.googlecode.com/svn/trunk/SharpMap/Rendering/Thematics/CustomTheme.cs
    Public Function SetStyle1(ByVal row As SharpMap.Data.FeatureDataRow) As SharpMap.Styles.VectorStyle
        Dim vstlStyle1 As SharpMap.Styles.VectorStyle = New SharpMap.Styles.VectorStyle()
        vstlStyle1.Enabled = True
        vstlStyle1.EnableOutline = True

        vstlStyle1.Fill = System.Drawing.Brushes.Yellow
        Return vstlStyle1
    End Function


    'density, countryname
    Private Sub InsertData(ByVal strParameter1 As String, ByVal strParameter2 As String)

        Dim dbcon As New System.Data.SqlClient.SqlConnection("Data Source=pc-myname\MS_SQL_2005;Initial Catalog=ddb;Integrated Security=SSPI;")
        dbcon.Open()


        Dim strSQL As String = "IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.T_SHP_Country') AND type in (N'U'))"
        strSQL += "CREATE TABLE T_SHP_Country( "
        strSQL += "SHPC_UID uniqueidentifier NULL, "
        strSQL += "SHPC_Density int NULL, "
        strSQL += "SHPC_CountryName nvarchar(max) NULL "
        strSQL += ") ON [PRIMARY] ;"

        Dim dbcmdCheckRequirements As New System.Data.SqlClient.SqlCommand(strSQL, dbcon)
        dbcmdCheckRequirements.ExecuteNonQuery()

        'dbcmdCheckRequirements.CommandText = "DELETE FROM T_SHP_Country"
        'dbcmdCheckRequirements.ExecuteNonQuery()


        strParameter1 = strParameter1.Replace("'", "''")
        strParameter2 = strParameter2.Replace("'", "''")
        'strParameter3 = strParameter3.Replace("'", "''")


        strSQL = "INSERT INTO T_SHP_Country "
        strSQL += "(SHPC_UID, SHPC_Density, SHPC_CountryName)"
        strSQL += "VALUES("
        strSQL += "'" + System.Guid.NewGuid.ToString() + "', " 'PLZ_UID, uniqueidentifier
        strSQL += " '" + strParameter1 + "', " 'PLZ_Name1, nvarchar(max)
        strSQL += " '" + strParameter2 + "' " 'PLZ_State, nvarchar(max)
        strSQL += ")"
        Dim cmd As New System.Data.SqlClient.SqlCommand(strSQL, dbcon)
        cmd.ExecuteNonQuery()

        dbcon.Close()
    End Sub


    Public Function SetStyle(ByVal row As SharpMap.Data.FeatureDataRow) As SharpMap.Styles.VectorStyle
        Response.Write("")

        If False Then
            For i As Integer = 0 To row.Table.Columns.Count - 1 Step 1
                Response.Write("<br>" + row.Table.Columns(i).ColumnName + "<br>")
                Response.Write("<br>" + row("NAME").ToString + ":    " + row("POPDENS").ToString + "<br>")
            Next i
        End If

        Try
            'InsertData(row("POPDENS").ToString(), row("NAME").ToString())
            Dim vstlStyle As SharpMap.Styles.VectorStyle = New SharpMap.Styles.VectorStyle()
            Select Case row("POPDENS")
                Case 0 To 5
                    ' Add reference to System.Drawing
                    Dim colCustomColor As System.Drawing.Color = System.Drawing.Color.FromArgb(50, System.Drawing.Color.Gray)
                    'Dim customColor As System.Drawing.Color = System.Drawing.Color.FromArgb(255, 0, 110, 255)
                    Dim sbShadowBrush As System.Drawing.SolidBrush = New System.Drawing.SolidBrush(colCustomColor)

                    vstlStyle.Fill = sbShadowBrush
                Case 6 To 9
                    vstlStyle.Fill = System.Drawing.Brushes.BlanchedAlmond
                Case 10 To 25
                    vstlStyle.Fill = System.Drawing.Brushes.DarkGreen
                Case 26 To 50
                    vstlStyle.Fill = System.Drawing.Brushes.Green
                Case 51 To 100
                    vstlStyle.Fill = System.Drawing.Brushes.YellowGreen
                Case 101 To 200
                    vstlStyle.Fill = System.Drawing.Brushes.Orange
                Case 201 To 250
                    vstlStyle.Fill = System.Drawing.Brushes.DarkOrange
                Case 251 To 300
                    vstlStyle.Fill = System.Drawing.Brushes.OrangeRed
                Case 401 To 600
                    vstlStyle.Fill = System.Drawing.Brushes.Red
                Case 601 To 900
                    vstlStyle.Fill = System.Drawing.Brushes.DarkRed
                Case 901 To 1000
                    vstlStyle.Fill = System.Drawing.Brushes.Crimson
                Case Else
                    vstlStyle.Fill = System.Drawing.Brushes.Pink
            End Select

            vstlStyle.EnableOutline = True
            Dim clCustomPenColor As System.Drawing.Color = System.Drawing.Color.FromArgb(100, 100, 100, 100)
            Dim myPen As New System.Drawing.Pen(clCustomPenColor)
            myPen.Width = 0.1
            'vstlStyle.Outline = System.Drawing.Pens.Black
            vstlStyle.Outline = myPen

            Return vstlStyle

            'If (row("NAME").ToString().StartsWith("S")) Then
            '    Dim vstlStyle As SharpMap.Styles.VectorStyle = New SharpMap.Styles.VectorStyle()
            '    vstlStyle.Fill = System.Drawing.Brushes.Yellow
            '    Return vstlStyle
            'Else
            '    Return Nothing ' Return null which will render the default style
            'End If

        Catch ex As Exception
            Response.Write(ex.Message)
            Return Nothing
        End Try
    End Function


    Sub SetThemeForLayerOnMap(ByRef cstCustomTheme As SharpMap.Rendering.Thematics.CustomTheme, ByVal strLayerName As String, ByRef smmMapParameter As SharpMap.Map)
        TryCast(smmMapParameter.GetLayerByName(strLayerName), SharpMap.Layers.VectorLayer).Theme = cstCustomTheme
        'CType(smmMapParameter.GetLayerByName(strLayerName), SharpMap.Layers.VectorLayer).Theme = cstCustomTheme
    End Sub


    Sub ReIndex(ByVal strRelativePath As String)
        Dim shfShapeFile As New SharpMap.Data.Providers.ShapeFile(Server.MapPath(strRelativePath), True)
        ReIndex(shfShapeFile)
    End Sub


    Sub ReIndex(ByRef shfShapeFile As SharpMap.Data.Providers.ShapeFile)
        If shfShapeFile.IsOpen Then
            shfShapeFile.RebuildSpatialIndex()
        Else
            shfShapeFile.Open()
            shfShapeFile.RebuildSpatialIndex()
            shfShapeFile.Close()
        End If
    End Sub


    Public Function OldDegreesToRadian(ByVal dblDegrees As Double) As Double
        Dim dblRadians = dblDegrees * Math.PI / 180.0
        Return dblRadians
    End Function


    Public Sub DistanceAltstRebstein()
        'http://www.getlatlon.com/
        Dim allat As Double = 47.377894
        Dim allong As Double = 9.539833

        Dim reblat As Double = 47.399364
        Dim reblong As Double = 9.585995

        Dim distance As Double = GetDistance(allat, reblat, allong, reblong)
        Response.Write("Distance: " + distance.ToString("#,#.000") + " km")
    End Sub


    'http://www.codeproject.com/KB/cs/distancebetweenlocations.aspx
    'http://www.billsternberger.net/asp-net-mvc/latitude-and-longitude-lookup-with-jquery-c-asp-net-mvc/
    'http://webcache.googleusercontent.com/search?q=cache:y6AGC8J7zG8J:bryan.reynoldslive.com/post/Latitude2c-Longitude2c-Bearing2c-Cardinal-Direction2c-Distance2c-and-C.aspx+c%23+get+latitude+longitude&cd=2&hl=en&ct=clnk
    Public Function GetDistance(ByVal dblLat1 As Double, ByVal dblLat2 As Double, ByVal dblLong1 As Double, ByVal dblLong2 As Double) As Double
        ' http://itouchmap.com/latlong.html
        ' http://mathforum.org/library/drmath/sets/select/dm_lat_long.html
        ' http://stevemorse.org/jcal/latlon.php
        ' http://en.wikipedia.org/wiki/Atan2



        ' http://www.movable-type.co.uk/scripts/latlong.html
        ' Formula:

        ' R = Earth's radius (mean radius = 6,371km)
        ' Δlat = lat2− lat1
        ' Δlong = long2− long1
        ' a = sin²(Δlat/2) + cos(lat1)*cos(lat2)*sin²(Δlong/2)
        ' c = 2*atan2(√a, √(1−a))
        ' d = R*c

        dblLat1 = OldDegreesToRadian(dblLat1)
        dblLat2 = OldDegreesToRadian(dblLat2)

        dblLong1 = OldDegreesToRadian(dblLong1)
        dblLong2 = OldDegreesToRadian(dblLong2)


        'http://en.wikipedia.org/wiki/Earth_radius#Mean_radii
        Dim dblEarthMeanRadius As Double = 6371.009 ' km
        Dim dblHalfDeltaLat As Double = (dblLat2 - dblLat1) / 2.0
        Dim dblHalfDeltaLong As Double = (dblLong2 - dblLong1) / 2.0


        Dim dblTriangleSideA As Double = Math.Sin(dblHalfDeltaLat) * Math.Sin(dblHalfDeltaLat) + _
                                         Math.Cos(dblLat1) * Math.Cos(dblLat2) * _
                                         Math.Sin(dblHalfDeltaLong) * Math.Sin(dblHalfDeltaLong)

        Dim dblTriangleSideC As Double = 2 * Math.Atan2(Math.Sqrt(dblTriangleSideA), Math.Sqrt(1 - dblTriangleSideA))

        Dim dblDistance As Double = dblEarthMeanRadius * dblTriangleSideC ' in km
        Return dblDistance ' in km

        ' Note for the English: 1 (statute) mile = 1609.344 m = 1.609344 km
        ' http://en.wikipedia.org/wiki/Mile#Nautical_mile
        dblDistance = dblDistance / 1.609344 ' km to statute miles
        Return dblDistance ' in statute miles
    End Function


    ''' <summary>
    ''' Sets up the map, add layers and sets styles
    ''' </summary>
    ''' <param name="outputsize">Initiatial size of output image</param>
    ''' <returns>Map object</returns>
    Private Function InitializeMap(ByVal outputsize As System.Drawing.Size) As SharpMap.Map
        'Initialize a new map of size 'imagesize'
        Dim map As New SharpMap.Map(outputsize)
        map.BackColor = Drawing.Color.AliceBlue
        'Set up the countries layer
        Dim layCountries As New SharpMap.Layers.VectorLayer("Countries")
        'Set the datasource to a shapefile in the App_data folder


        Dim sfShapeFile1 As New SharpMap.Data.Providers.ShapeFile(Server.MapPath("~\App_data\Countries.shp"), True)
        ReIndex(sfShapeFile1)



        'Dim x As System.Data.DataColumnCollection = sfShapeFile1.Columns
        'For Each y As DataColumn In x
        ' Response.Write(y.ColumnName)
        ' Response.Write(y.DataType.ToString())
        '
        '        Next
        'x.Item(0).ColumnName
        'x.Item(0).DataType.ToString()



        layCountries.DataSource = sfShapeFile1
        'Set fill-style to green
        Dim MyTheme As New SharpMap.Rendering.Thematics.CustomTheme(AddressOf SetStyle)

        Dim defaultstyle As SharpMap.Styles.VectorStyle = New SharpMap.Styles.VectorStyle()
        defaultstyle.Fill = System.Drawing.Brushes.Gray
        MyTheme.DefaultStyle = defaultstyle

        layCountries.Theme = MyTheme

        layCountries.Style.Fill = New System.Drawing.SolidBrush(System.Drawing.Color.Green)
        'Set the polygons to have a black outline
        layCountries.Style.Outline = System.Drawing.Pens.Black
        layCountries.Style.EnableOutline = True

        'Set up a river layer
        Dim layRivers As New SharpMap.Layers.VectorLayer("Rivers")
        'Set the datasource to a shapefile in the App_data folder

        Dim sh2 As New SharpMap.Data.Providers.ShapeFile(Server.MapPath("~\App_data\Rivers.shp"), True)
        ReIndex(sh2)


        layRivers.DataSource = sh2
        'Define a blue 1px wide pen
        layRivers.Style.Line = New System.Drawing.Pen(System.Drawing.Color.Blue, 1)
        'Dim x As New SharpMap.Rendering.Thematics.IndividualTheme("abc")



        'Add the layers to the map object.
        'The order we add them in are the order they are drawn, so we add the rivers last to put them on top
        map.Layers.Add(layCountries)
        map.Layers.Add(layRivers)
        Return map
    End Function


    ''' <summary>
    ''' Creates the map, inserts it into the cache and sets the ImageButton Url
    ''' </summary>
    Private Sub CreateMap()
        If smmGlobalMap Is Nothing Then
            Response.Write("<h1 style=""color: red;"">smmGlobalMap is NULL !</h1>")
        Else
            Dim img As System.Drawing.Image = smmGlobalMap.GetMap()
            Dim imgID As String = SharpMap.Web.Caching.InsertIntoCache(1, img)
            imgMap.ImageUrl = "getmap.aspx?ID=" & HttpUtility.UrlEncode(imgID)
        End If

    End Sub


End Class




















' http://www.4guysfromrolla.com/articles/052610-1.aspx

' http://code.google.com/apis/maps/faq.html
' http://www.billsternberger.net/asp-net-mvc/latitude-and-longitude-lookup-with-jquery-c-asp-net-mvc/
' http://code.google.com/apis/maps/documentation/geocoding/
' http://code.google.com/apis/maps/documentation/geocoding/index.html
' http://code.google.com/apis/maps/faq.html#geocoder_countries



' http://maps.google.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false
' http://maps.google.com/maps/api/geocode/json?address=Zurich,+Switzerland&sensor=false
' http://maps.google.com/maps/api/geocode/json?address=SanBernardino,+Switzerland&sensor=false&output=json
' http://maps.google.com/maps/api/geocode/json?address=afsdfKarrrachiii&sensor=false&output=json


' http://math.rice.edu/~pcmi/sphere/sphere.html
' http://math.rice.edu/~pcmi/sphere/


Namespace Google.Maps.JSON


    Public Class cAddressComponent
        Public long_name
        Public short_name
        Public types As New List(Of String) '"locality", "country", "postal_code", "sublocality", administrative_area_level_1", administrative_area_level_2", "political"
    End Class


    Public Class cLocation
        Public lat As Double = 0
        Public lng As Double = 0
    End Class


    Public Class cViewPort
        Public southwest As New cLocation
        Public northeast As New cLocation
    End Class


    Public Class cBounds
        Public southwest As New cLocation
        Public northeast As New cLocation
    End Class


    Public Class cGeometry
        Public location As New cLocation
        Public location_type As String = "APPROXIMATE" ' "GEOMETRIC_CENTER",
        Public viewport As New cViewPort
        Public bounds As New cBounds
    End Class


    Public Class cResult
        Public types As New List(Of String) ' "route", "point_of_interest", "establishment", "locality", "sublocality", "political" 
        Public formatted_address As String
        Public address_components As New List(Of cAddressComponent)
        Public geometry As New cGeometry
    End Class


    Public Class cGeoCodeResponse
        Public status As String = "ZERO_RESULTS" ' "OK" 
        Public results As New List(Of cResult)
    End Class


End Namespace

You can take a look at the json object returned by any query to the maps api.

Then you use the json serializer in system.web.extensions to serialize the json into a class that you have to create from the JSONresponses which you analyze manually.

Note that you can get localized language return results by adding this to the http web request:

    wrHTTPrequest.UserAgent = "Lord Vishnu/Transcendental (Vaikuntha;Supreme Personality of Godness)"
    wrHTTPrequest.Headers.Add("Accept-Language:" + System.Globalization.CultureInfo.CurrentCulture.Name)
    wrHTTPrequest.ContentType = "text/html"

Edit:
The example, from one of my files (remove all the SharpMap.Map stuff, it requires an external assembly.

Copyright (C) 2010 Me. Permission is hereby granted to use it for
good, not evil - if you add me to your thanks list.

Public Class _Default
    Inherits System.Web.UI.Page

    Protected smmGlobalMap As SharpMap.Map

    'http://www.java2s.com/Code/VB/Development/ListallCultureInformation.htm
    Public Sub listcultures()
        'Dim x As System.DateTime = DateTime.Now
        'Response.Write(x.ToString("HH':'mm':'ss MMM d', 'yyyy 'PST'", New System.Globalization.CultureInfo("zh-CN", False)))
        Dim info As System.Globalization.CultureInfo
        For Each info In System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures)
            Response.Write("Deutsch: " + info.DisplayName + " English: " + info.EnglishName + " Native: " + info.NativeName + " Name: " + info.Name + " Codepage: " + info.TextInfo.ANSICodePage.ToString() + "<br />")
            If Not info.IsNeutralCulture Then
                'item.SubItems.Add(amount.ToString("C", info.NumberFormat))
                'item.SubItems.Add(dateNow.ToString("d", info.DateTimeFormat))
            End If
        Next

    End Sub


    Public Sub GeoCodeTest()
        'Dim GeoCodeResponse As Google.Maps.JSON.cGeoCodeResponse = GetJSONgeodata("San Bernardino, Switzerland")
        'Dim GeoCodeResponse As Google.Maps.JSON.cGeoCodeResponse = GetJSONgeodata("北京")
        'Dim GeoCodeResponse As Google.Maps.JSON.cGeoCodeResponse = GeoCodeRequest("San Bernardino, Switzerland")
        Dim GeoCodeResponse As Google.Maps.JSON.cGeoCodeResponse = GeoCodeRequest("北京")
        Response.Write(Seri(GeoCodeResponse))
        Response.Write("<br /><br /><br />")
        Response.Write(GeoCodeResponse.results(0).address_components(0).long_name)
        Response.Write("<br /><br />")
        Response.Write(GeoCodeResponse.results(0).geometry.location.lat.ToString)
        Response.Write("<br />")
        Response.Write(GeoCodeResponse.results(0).geometry.location.lng.ToString)
        Response.Write("<br /><br /><br />")
        Response.Write(GeoCodeResponse.results(0).geometry.viewport.northeast.lat.ToString)
        Response.Write("<br />")
        Response.Write(GeoCodeResponse.results(0).geometry.viewport.northeast.lng.ToString)
        Response.Write("<br /><br /><br />")
    End Sub


    Public Function Seri(ByRef GeoData As Google.Maps.JSON.cGeoCodeResponse) As String
        Dim jssJSONserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
        Dim CommentData As New Google.Maps.JSON.cGeoCodeResponse
        Dim str As String = jssJSONserializer.Serialize(GeoData)
        Return str
    End Function


    ' http://www.codeproject.com/KB/IP/httpwebrequest_response.aspx
    ' http://www.linuxhowtos.org/C_C++/socket.htm
    ' http://en.wikipedia.org/wiki/List_of_countries_by_GDP_(PPP)_per_capita
    Public Function GeoCodeRequest(ByRef strAddress As String) As Google.Maps.JSON.cGeoCodeResponse
        strAddress = System.Web.HttpUtility.UrlEncode(strAddress) ' Add reference to System.Web
        Dim strURL As String = "http://maps.google.com/maps/api/geocode/json?address=" + strAddress + "&sensor=false"

        ' *** Establish the request
        Dim wrHTTPrequest As System.Net.HttpWebRequest = DirectCast(System.Net.WebRequest.Create(strURL), System.Net.HttpWebRequest)

        ' *** Set properties
        wrHTTPrequest.Method = "GET"
        wrHTTPrequest.Timeout = 10000 ' 10 secs
        wrHTTPrequest.UserAgent = "Lord Vishnu/Transcendental (Vaikuntha;Supreme Personality of Godness)"
        wrHTTPrequest.Headers.Add("Accept-Language:" + System.Globalization.CultureInfo.CurrentCulture.Name)
        wrHTTPrequest.ContentType = "text/html"


        ' *** Retrieve request info headers
        Dim wrHTTPresponse As System.Net.HttpWebResponse = DirectCast(wrHTTPrequest.GetResponse(), System.Net.HttpWebResponse)

        ' My Windows' default code-Page
        Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(1252)

        ' Google's code-page
        enc = System.Text.Encoding.UTF8

        Dim srResponseStream As New System.IO.StreamReader(wrHTTPresponse.GetResponseStream(), enc)

        Dim strJSONencodedResponse As String = srResponseStream.ReadToEnd()
        wrHTTPresponse.Close()
        srResponseStream.Close()

        If String.IsNullOrEmpty(strJSONencodedResponse) Then
            Return Nothing
        End If

        Dim jssJSONserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
        Dim GeoCodeResponse As New Google.Maps.JSON.cGeoCodeResponse
        GeoCodeResponse = jssJSONserializer.Deserialize(Of Google.Maps.JSON.cGeoCodeResponse)(strJSONencodedResponse)

        Return GeoCodeResponse
    End Function




    Public Function GetJSONgeodata(ByVal strAddress As String) As Google.Maps.JSON.cGeoCodeResponse
        'strAddress = "Zurich, Switzerland"
        strAddress = System.Web.HttpUtility.UrlEncode(strAddress) ' Add reference to System.Web
        Dim strURL As String = "http://maps.google.com/maps/api/geocode/json?address=" + strAddress + "&sensor=false"


        Dim wwwClient As Net.WebClient = Nothing
        Dim strJSONtranslatedText As String = Nothing

        Try
            'http://www.stevetrefethen.com/blog/UsingGoogleMapsforGeocodinginC.aspx
            wwwClient = New Net.WebClient()
            wwwClient.Encoding = System.Text.Encoding.UTF8
            strJSONtranslatedText = wwwClient.DownloadString(strURL)
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            wwwClient.Dispose()
            wwwClient = Nothing
        End Try
        If String.IsNullOrEmpty(strJSONtranslatedText) Then
            Return Nothing
        End If

        Dim jssJSONserializer As System.Web.Script.Serialization.JavaScriptSerializer = New System.Web.Script.Serialization.JavaScriptSerializer()
        Dim GeoCodeRespone As New Google.Maps.JSON.cGeoCodeResponse
        GeoCodeRespone = jssJSONserializer.Deserialize(Of Google.Maps.JSON.cGeoCodeResponse)(strJSONtranslatedText)

        Return GeoCodeRespone
    End Function



    ' http://sharpmap.codeplex.com/wikipage?title=CustomTheme
    ' http://sharpmap.codeplex.com/Thread/View.aspx?ThreadId=28205
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'GeoCodeTest()
        listcultures()

        'Set up the map
        smmGlobalMap = InitializeMap(New System.Drawing.Size(CInt(imgMap.Width.Value), CInt(imgMap.Height.Value)))
        If Page.IsPostBack Then
            'Page is post back. Restore center and zoom-values from viewstate
            smmGlobalMap.Center = DirectCast(ViewState("mapCenter"), SharpMap.Geometries.Point)
            smmGlobalMap.Zoom = CDbl(ViewState("mapZoom"))
        Else
            'This is the initial view of the map. Zoom to the extents of the map:
            smmGlobalMap.ZoomToExtents()
            'Save the current mapcenter and zoom in the viewstate
            ViewState.Add("mapCenter", smmGlobalMap.Center)
            ViewState.Add("mapZoom", smmGlobalMap.Zoom)
            'Create the map
            CreateMap()
        End If
        DistanceAltstRebstein()
    End Sub


    Protected Sub imgMap_Click(ByVal sender As Object, ByVal e As ImageClickEventArgs)
        'Set center of the map to where the client clicked
        smmGlobalMap.Center = SharpMap.Utilities.Transform.MapToWorld(New System.Drawing.Point(e.X, e.Y), smmGlobalMap)
        'Set zoom value if any of the zoom tools were selected
        If rblMapTools.SelectedValue = "0" Then
            'Zoom in
            smmGlobalMap.Zoom = smmGlobalMap.Zoom * 0.5
        ElseIf rblMapTools.SelectedValue = "1" Then
            'Zoom out
            smmGlobalMap.Zoom = smmGlobalMap.Zoom * 2
        End If
        'Save the new map's zoom and center in the viewstate
        ViewState.Add("mapCenter", smmGlobalMap.Center)
        ViewState.Add("mapZoom", smmGlobalMap.Zoom)
        'Create the map
        CreateMap()
        Response.Write("X: " + e.X.ToString + " Y: " + e.Y.ToString + "<br /><br />")
        Response.Write("Longitude: " + smmGlobalMap.Center.X.ToString + " Latitude: " + smmGlobalMap.Center.Y.ToString + "<br />")

    End Sub


    ' http://sharpmapv2.googlecode.com/svn/trunk/SharpMap/Rendering/Thematics/CustomTheme.cs
    Public Function SetStyle1(ByVal row As SharpMap.Data.FeatureDataRow) As SharpMap.Styles.VectorStyle
        Dim vstlStyle1 As SharpMap.Styles.VectorStyle = New SharpMap.Styles.VectorStyle()
        vstlStyle1.Enabled = True
        vstlStyle1.EnableOutline = True

        vstlStyle1.Fill = System.Drawing.Brushes.Yellow
        Return vstlStyle1
    End Function


    'density, countryname
    Private Sub InsertData(ByVal strParameter1 As String, ByVal strParameter2 As String)

        Dim dbcon As New System.Data.SqlClient.SqlConnection("Data Source=pc-myname\MS_SQL_2005;Initial Catalog=ddb;Integrated Security=SSPI;")
        dbcon.Open()


        Dim strSQL As String = "IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.T_SHP_Country') AND type in (N'U'))"
        strSQL += "CREATE TABLE T_SHP_Country( "
        strSQL += "SHPC_UID uniqueidentifier NULL, "
        strSQL += "SHPC_Density int NULL, "
        strSQL += "SHPC_CountryName nvarchar(max) NULL "
        strSQL += ") ON [PRIMARY] ;"

        Dim dbcmdCheckRequirements As New System.Data.SqlClient.SqlCommand(strSQL, dbcon)
        dbcmdCheckRequirements.ExecuteNonQuery()

        'dbcmdCheckRequirements.CommandText = "DELETE FROM T_SHP_Country"
        'dbcmdCheckRequirements.ExecuteNonQuery()


        strParameter1 = strParameter1.Replace("'", "''")
        strParameter2 = strParameter2.Replace("'", "''")
        'strParameter3 = strParameter3.Replace("'", "''")


        strSQL = "INSERT INTO T_SHP_Country "
        strSQL += "(SHPC_UID, SHPC_Density, SHPC_CountryName)"
        strSQL += "VALUES("
        strSQL += "'" + System.Guid.NewGuid.ToString() + "', " 'PLZ_UID, uniqueidentifier
        strSQL += " '" + strParameter1 + "', " 'PLZ_Name1, nvarchar(max)
        strSQL += " '" + strParameter2 + "' " 'PLZ_State, nvarchar(max)
        strSQL += ")"
        Dim cmd As New System.Data.SqlClient.SqlCommand(strSQL, dbcon)
        cmd.ExecuteNonQuery()

        dbcon.Close()
    End Sub


    Public Function SetStyle(ByVal row As SharpMap.Data.FeatureDataRow) As SharpMap.Styles.VectorStyle
        Response.Write("")

        If False Then
            For i As Integer = 0 To row.Table.Columns.Count - 1 Step 1
                Response.Write("<br>" + row.Table.Columns(i).ColumnName + "<br>")
                Response.Write("<br>" + row("NAME").ToString + ":    " + row("POPDENS").ToString + "<br>")
            Next i
        End If

        Try
            'InsertData(row("POPDENS").ToString(), row("NAME").ToString())
            Dim vstlStyle As SharpMap.Styles.VectorStyle = New SharpMap.Styles.VectorStyle()
            Select Case row("POPDENS")
                Case 0 To 5
                    ' Add reference to System.Drawing
                    Dim colCustomColor As System.Drawing.Color = System.Drawing.Color.FromArgb(50, System.Drawing.Color.Gray)
                    'Dim customColor As System.Drawing.Color = System.Drawing.Color.FromArgb(255, 0, 110, 255)
                    Dim sbShadowBrush As System.Drawing.SolidBrush = New System.Drawing.SolidBrush(colCustomColor)

                    vstlStyle.Fill = sbShadowBrush
                Case 6 To 9
                    vstlStyle.Fill = System.Drawing.Brushes.BlanchedAlmond
                Case 10 To 25
                    vstlStyle.Fill = System.Drawing.Brushes.DarkGreen
                Case 26 To 50
                    vstlStyle.Fill = System.Drawing.Brushes.Green
                Case 51 To 100
                    vstlStyle.Fill = System.Drawing.Brushes.YellowGreen
                Case 101 To 200
                    vstlStyle.Fill = System.Drawing.Brushes.Orange
                Case 201 To 250
                    vstlStyle.Fill = System.Drawing.Brushes.DarkOrange
                Case 251 To 300
                    vstlStyle.Fill = System.Drawing.Brushes.OrangeRed
                Case 401 To 600
                    vstlStyle.Fill = System.Drawing.Brushes.Red
                Case 601 To 900
                    vstlStyle.Fill = System.Drawing.Brushes.DarkRed
                Case 901 To 1000
                    vstlStyle.Fill = System.Drawing.Brushes.Crimson
                Case Else
                    vstlStyle.Fill = System.Drawing.Brushes.Pink
            End Select

            vstlStyle.EnableOutline = True
            Dim clCustomPenColor As System.Drawing.Color = System.Drawing.Color.FromArgb(100, 100, 100, 100)
            Dim myPen As New System.Drawing.Pen(clCustomPenColor)
            myPen.Width = 0.1
            'vstlStyle.Outline = System.Drawing.Pens.Black
            vstlStyle.Outline = myPen

            Return vstlStyle

            'If (row("NAME").ToString().StartsWith("S")) Then
            '    Dim vstlStyle As SharpMap.Styles.VectorStyle = New SharpMap.Styles.VectorStyle()
            '    vstlStyle.Fill = System.Drawing.Brushes.Yellow
            '    Return vstlStyle
            'Else
            '    Return Nothing ' Return null which will render the default style
            'End If

        Catch ex As Exception
            Response.Write(ex.Message)
            Return Nothing
        End Try
    End Function


    Sub SetThemeForLayerOnMap(ByRef cstCustomTheme As SharpMap.Rendering.Thematics.CustomTheme, ByVal strLayerName As String, ByRef smmMapParameter As SharpMap.Map)
        TryCast(smmMapParameter.GetLayerByName(strLayerName), SharpMap.Layers.VectorLayer).Theme = cstCustomTheme
        'CType(smmMapParameter.GetLayerByName(strLayerName), SharpMap.Layers.VectorLayer).Theme = cstCustomTheme
    End Sub


    Sub ReIndex(ByVal strRelativePath As String)
        Dim shfShapeFile As New SharpMap.Data.Providers.ShapeFile(Server.MapPath(strRelativePath), True)
        ReIndex(shfShapeFile)
    End Sub


    Sub ReIndex(ByRef shfShapeFile As SharpMap.Data.Providers.ShapeFile)
        If shfShapeFile.IsOpen Then
            shfShapeFile.RebuildSpatialIndex()
        Else
            shfShapeFile.Open()
            shfShapeFile.RebuildSpatialIndex()
            shfShapeFile.Close()
        End If
    End Sub


    Public Function OldDegreesToRadian(ByVal dblDegrees As Double) As Double
        Dim dblRadians = dblDegrees * Math.PI / 180.0
        Return dblRadians
    End Function


    Public Sub DistanceAltstRebstein()
        'http://www.getlatlon.com/
        Dim allat As Double = 47.377894
        Dim allong As Double = 9.539833

        Dim reblat As Double = 47.399364
        Dim reblong As Double = 9.585995

        Dim distance As Double = GetDistance(allat, reblat, allong, reblong)
        Response.Write("Distance: " + distance.ToString("#,#.000") + " km")
    End Sub


    'http://www.codeproject.com/KB/cs/distancebetweenlocations.aspx
    'http://www.billsternberger.net/asp-net-mvc/latitude-and-longitude-lookup-with-jquery-c-asp-net-mvc/
    'http://webcache.googleusercontent.com/search?q=cache:y6AGC8J7zG8J:bryan.reynoldslive.com/post/Latitude2c-Longitude2c-Bearing2c-Cardinal-Direction2c-Distance2c-and-C.aspx+c%23+get+latitude+longitude&cd=2&hl=en&ct=clnk
    Public Function GetDistance(ByVal dblLat1 As Double, ByVal dblLat2 As Double, ByVal dblLong1 As Double, ByVal dblLong2 As Double) As Double
        ' http://itouchmap.com/latlong.html
        ' http://mathforum.org/library/drmath/sets/select/dm_lat_long.html
        ' http://stevemorse.org/jcal/latlon.php
        ' http://en.wikipedia.org/wiki/Atan2



        ' http://www.movable-type.co.uk/scripts/latlong.html
        ' Formula:

        ' R = Earth's radius (mean radius = 6,371km)
        ' Δlat = lat2− lat1
        ' Δlong = long2− long1
        ' a = sin²(Δlat/2) + cos(lat1)*cos(lat2)*sin²(Δlong/2)
        ' c = 2*atan2(√a, √(1−a))
        ' d = R*c

        dblLat1 = OldDegreesToRadian(dblLat1)
        dblLat2 = OldDegreesToRadian(dblLat2)

        dblLong1 = OldDegreesToRadian(dblLong1)
        dblLong2 = OldDegreesToRadian(dblLong2)


        'http://en.wikipedia.org/wiki/Earth_radius#Mean_radii
        Dim dblEarthMeanRadius As Double = 6371.009 ' km
        Dim dblHalfDeltaLat As Double = (dblLat2 - dblLat1) / 2.0
        Dim dblHalfDeltaLong As Double = (dblLong2 - dblLong1) / 2.0


        Dim dblTriangleSideA As Double = Math.Sin(dblHalfDeltaLat) * Math.Sin(dblHalfDeltaLat) + _
                                         Math.Cos(dblLat1) * Math.Cos(dblLat2) * _
                                         Math.Sin(dblHalfDeltaLong) * Math.Sin(dblHalfDeltaLong)

        Dim dblTriangleSideC As Double = 2 * Math.Atan2(Math.Sqrt(dblTriangleSideA), Math.Sqrt(1 - dblTriangleSideA))

        Dim dblDistance As Double = dblEarthMeanRadius * dblTriangleSideC ' in km
        Return dblDistance ' in km

        ' Note for the English: 1 (statute) mile = 1609.344 m = 1.609344 km
        ' http://en.wikipedia.org/wiki/Mile#Nautical_mile
        dblDistance = dblDistance / 1.609344 ' km to statute miles
        Return dblDistance ' in statute miles
    End Function


    ''' <summary>
    ''' Sets up the map, add layers and sets styles
    ''' </summary>
    ''' <param name="outputsize">Initiatial size of output image</param>
    ''' <returns>Map object</returns>
    Private Function InitializeMap(ByVal outputsize As System.Drawing.Size) As SharpMap.Map
        'Initialize a new map of size 'imagesize'
        Dim map As New SharpMap.Map(outputsize)
        map.BackColor = Drawing.Color.AliceBlue
        'Set up the countries layer
        Dim layCountries As New SharpMap.Layers.VectorLayer("Countries")
        'Set the datasource to a shapefile in the App_data folder


        Dim sfShapeFile1 As New SharpMap.Data.Providers.ShapeFile(Server.MapPath("~\App_data\Countries.shp"), True)
        ReIndex(sfShapeFile1)



        'Dim x As System.Data.DataColumnCollection = sfShapeFile1.Columns
        'For Each y As DataColumn In x
        ' Response.Write(y.ColumnName)
        ' Response.Write(y.DataType.ToString())
        '
        '        Next
        'x.Item(0).ColumnName
        'x.Item(0).DataType.ToString()



        layCountries.DataSource = sfShapeFile1
        'Set fill-style to green
        Dim MyTheme As New SharpMap.Rendering.Thematics.CustomTheme(AddressOf SetStyle)

        Dim defaultstyle As SharpMap.Styles.VectorStyle = New SharpMap.Styles.VectorStyle()
        defaultstyle.Fill = System.Drawing.Brushes.Gray
        MyTheme.DefaultStyle = defaultstyle

        layCountries.Theme = MyTheme

        layCountries.Style.Fill = New System.Drawing.SolidBrush(System.Drawing.Color.Green)
        'Set the polygons to have a black outline
        layCountries.Style.Outline = System.Drawing.Pens.Black
        layCountries.Style.EnableOutline = True

        'Set up a river layer
        Dim layRivers As New SharpMap.Layers.VectorLayer("Rivers")
        'Set the datasource to a shapefile in the App_data folder

        Dim sh2 As New SharpMap.Data.Providers.ShapeFile(Server.MapPath("~\App_data\Rivers.shp"), True)
        ReIndex(sh2)


        layRivers.DataSource = sh2
        'Define a blue 1px wide pen
        layRivers.Style.Line = New System.Drawing.Pen(System.Drawing.Color.Blue, 1)
        'Dim x As New SharpMap.Rendering.Thematics.IndividualTheme("abc")



        'Add the layers to the map object.
        'The order we add them in are the order they are drawn, so we add the rivers last to put them on top
        map.Layers.Add(layCountries)
        map.Layers.Add(layRivers)
        Return map
    End Function


    ''' <summary>
    ''' Creates the map, inserts it into the cache and sets the ImageButton Url
    ''' </summary>
    Private Sub CreateMap()
        If smmGlobalMap Is Nothing Then
            Response.Write("<h1 style=""color: red;"">smmGlobalMap is NULL !</h1>")
        Else
            Dim img As System.Drawing.Image = smmGlobalMap.GetMap()
            Dim imgID As String = SharpMap.Web.Caching.InsertIntoCache(1, img)
            imgMap.ImageUrl = "getmap.aspx?ID=" & HttpUtility.UrlEncode(imgID)
        End If

    End Sub


End Class




















' http://www.4guysfromrolla.com/articles/052610-1.aspx

' http://code.google.com/apis/maps/faq.html
' http://www.billsternberger.net/asp-net-mvc/latitude-and-longitude-lookup-with-jquery-c-asp-net-mvc/
' http://code.google.com/apis/maps/documentation/geocoding/
' http://code.google.com/apis/maps/documentation/geocoding/index.html
' http://code.google.com/apis/maps/faq.html#geocoder_countries



' http://maps.google.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=false
' http://maps.google.com/maps/api/geocode/json?address=Zurich,+Switzerland&sensor=false
' http://maps.google.com/maps/api/geocode/json?address=SanBernardino,+Switzerland&sensor=false&output=json
' http://maps.google.com/maps/api/geocode/json?address=afsdfKarrrachiii&sensor=false&output=json


' http://math.rice.edu/~pcmi/sphere/sphere.html
' http://math.rice.edu/~pcmi/sphere/


Namespace Google.Maps.JSON


    Public Class cAddressComponent
        Public long_name
        Public short_name
        Public types As New List(Of String) '"locality", "country", "postal_code", "sublocality", administrative_area_level_1", administrative_area_level_2", "political"
    End Class


    Public Class cLocation
        Public lat As Double = 0
        Public lng As Double = 0
    End Class


    Public Class cViewPort
        Public southwest As New cLocation
        Public northeast As New cLocation
    End Class


    Public Class cBounds
        Public southwest As New cLocation
        Public northeast As New cLocation
    End Class


    Public Class cGeometry
        Public location As New cLocation
        Public location_type As String = "APPROXIMATE" ' "GEOMETRIC_CENTER",
        Public viewport As New cViewPort
        Public bounds As New cBounds
    End Class


    Public Class cResult
        Public types As New List(Of String) ' "route", "point_of_interest", "establishment", "locality", "sublocality", "political" 
        Public formatted_address As String
        Public address_components As New List(Of cAddressComponent)
        Public geometry As New cGeometry
    End Class


    Public Class cGeoCodeResponse
        Public status As String = "ZERO_RESULTS" ' "OK" 
        Public results As New List(Of cResult)
    End Class


End Namespace
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文