Sample code for 30+ languages & platforms
B4X Requires Chilkat v11.1.0+

Google Maps Geolocation Request

See more REST Examples

Demonstrates how make a Google Maps Geolocation REST API request.

Chilkat B4X Downloads

B4X
Dim success As Boolean = False

'  This example duplicates the following CURL request:
'  curl -d @your_filename.json -H "Content-Type: application/json" -i "https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR_API_KEY"

'  This example requires the Chilkat API to have been previously unlocked.
'  See Global Unlock Sample for sample code.

Dim rest As ChilkatRest
rest.Initialize("rest")

'  Connect to the Google API REST server.
Dim bTls As Boolean = True
Dim port As Int = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect("www.googleapis.com", port, bTls, bAutoReconnect)

'  Add the Content-Type request header.
rest.AddHeader("Content-Type", "application/json")

'  Add your API key as a query parameter
rest.AddQueryParam("key", "YOUR_API_KEY")

'  The JSON query is contained in the body of the HTTP POST.
'  This is a sample query (which we'll dynamically build in this example)
'  { 
'   "homeMobileCountryCode": 310,
'   "homeMobileNetworkCode": 260,
'   "radioType": "gsm",
'   "carrier": "T-Mobile",
'   "cellTowers": [
'    {
'     "cellId": 39627456,
'     "locationAreaCode": 40495,
'     "mobileCountryCode": 310,
'     "mobileNetworkCode": 260,
'     "age": 0,
'     "signalStrength": -95
'    }
'   ],
'   "wifiAccessPoints": [
'    { 
'     "macAddress": "01:23:45:67:89:AB",
'     "signalStrength": 8,
'     "age": 0,
'     "signalToNoiseRatio": -65,
'     "channel": 8
'    },
'    { 
'     "macAddress": "01:23:45:67:89:AC",
'     "signalStrength": 4,
'     "age": 0
'    }
'   ]
'  }

Dim json As ChilkatJsonObject
json.Initialize
json.AppendInt("homeMobileCountryCode", 310)
json.AppendInt("homeMobileNetworkCode", 260)
json.AppendString("radioType", "gsm")
json.AppendString("carrier", "T-Mobile")

Dim aCellTowers As ChilkatJsonArray
aCellTowers.Initialize
json.AppendArray2("cellTowers", aCellTowers)

Dim oCellTower As ChilkatJsonObject
oCellTower.Initialize
aCellTowers.AddObjectAt2(0, oCellTower)
oCellTower.AppendInt("cellId", 39627456)
oCellTower.AppendInt("locationAreaCode", 40495)
oCellTower.AppendInt("mobileCountryCode", 310)
oCellTower.AppendInt("mobileNetworkCode", 260)
oCellTower.AppendInt("age", 0)
oCellTower.AppendInt("signalStrength", -95)

Dim aWifi As ChilkatJsonArray
aWifi.Initialize
json.AppendArray2("wifiAccessPoints", aWifi)

Dim oPoint As ChilkatJsonObject
oPoint.Initialize
aWifi.AddObjectAt2(0, oPoint)
oPoint.AppendString("macAddress", "01:23:45:67:89:AB")
oPoint.AppendInt("signalStrength", 8)
oPoint.AppendInt("age", 0)
oPoint.AppendInt("signalToNoiseRatio", -65)
oPoint.AppendInt("channel", 8)

aWifi.AddObjectAt2(1, oPoint)
oPoint.AppendString("macAddress", "01:23:45:67:89:AC")
oPoint.AppendInt("signalStrength", 4)
oPoint.AppendInt("age", 0)

Dim responseJson As String = rest.FullRequestString("POST", "/geolocation/v1/geolocate", json.Emit)
If rest.LastMethodSuccess = False Then
    Log(rest.LastErrorText)
    Return
End If


'  When successful, the response code is 200.
If rest.ResponseStatusCode <> 200 Then
    '  Examine the request/response to see what happened.
    Log("response status code = " & rest.ResponseStatusCode)
    Log("response status text = " & rest.ResponseStatusText)
    Log("response header: " & rest.ResponseHeader)
    Log("response JSON: " & responseJson)
    Log("---")
    Log("LastRequestStartLine: " & rest.LastRequestStartLine)
    Log("LastRequestHeader: " & rest.LastRequestHeader)
    Return
End If


json.EmitCompact = False
Log("JSON request body: " & json.Emit)

'  The JSON response should look like this:
'  { 
'   "location": {
'    "lat": 37.4248297,
'    "lng": -122.07346549999998
'   },
'   "accuracy": 1145.0
'  }

Log("JSON response: " & responseJson)

Dim jsonResp As ChilkatJsonObject
jsonResp.Initialize
jsonResp.Load(responseJson)

Dim jsonLoc As ChilkatJsonObject
jsonLoc.Initialize
jsonResp.ObjectOf2("location", jsonLoc)

'  Any JSON value can be obtained as a string..
Dim latitude As String = jsonLoc.StringOf("lat")
Log("latitude = " & latitude)
Dim longitude As String = jsonLoc.StringOf("lng")
Log("longitude = " & longitude)

Dim accuracy As String = jsonResp.StringOf("accuracy")
Log("accuracy = " & accuracy)