Sample code for 30+ languages & platforms
Lianja

Google Maps Geolocation Request

See more REST Examples

Demonstrates how make a Google Maps Geolocation REST API request.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

// 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.

loRest = createobject("CkRest")

// Connect to the Google API REST server.
llBTls = .T.
lnPort = 443
llBAutoReconnect = .T.
llSuccess = loRest.Connect("www.googleapis.com",lnPort,llBTls,llBAutoReconnect)

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

// Add your API key as a query parameter
loRest.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
//   }
//  ]
// }

loJson = createobject("CkJsonObject")
loJson.AppendInt("homeMobileCountryCode",310)
loJson.AppendInt("homeMobileNetworkCode",260)
loJson.AppendString("radioType","gsm")
loJson.AppendString("carrier","T-Mobile")

loACellTowers = createobject("CkJsonArray")
loJson.AppendArray2("cellTowers",loACellTowers)

loOCellTower = createobject("CkJsonObject")
loACellTowers.AddObjectAt2(0,loOCellTower)
loOCellTower.AppendInt("cellId",39627456)
loOCellTower.AppendInt("locationAreaCode",40495)
loOCellTower.AppendInt("mobileCountryCode",310)
loOCellTower.AppendInt("mobileNetworkCode",260)
loOCellTower.AppendInt("age",0)
loOCellTower.AppendInt("signalStrength",-95)

loAWifi = createobject("CkJsonArray")
loJson.AppendArray2("wifiAccessPoints",loAWifi)

loOPoint = createobject("CkJsonObject")
loAWifi.AddObjectAt2(0,loOPoint)
loOPoint.AppendString("macAddress","01:23:45:67:89:AB")
loOPoint.AppendInt("signalStrength",8)
loOPoint.AppendInt("age",0)
loOPoint.AppendInt("signalToNoiseRatio",-65)
loOPoint.AppendInt("channel",8)

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

lcResponseJson = loRest.FullRequestString("POST","/geolocation/v1/geolocate",loJson.Emit())
if (loRest.LastMethodSuccess = .F.) then
    ? loRest.LastErrorText
    release loRest
    release loJson
    release loACellTowers
    release loOCellTower
    release loAWifi
    release loOPoint
    return
endif

// When successful, the response code is 200.
if (loRest.ResponseStatusCode <> 200) then
    // Examine the request/response to see what happened.
    ? "response status code = " + str(loRest.ResponseStatusCode)
    ? "response status text = " + loRest.ResponseStatusText
    ? "response header: " + loRest.ResponseHeader
    ? "response JSON: " + lcResponseJson
    ? "---"
    ? "LastRequestStartLine: " + loRest.LastRequestStartLine
    ? "LastRequestHeader: " + loRest.LastRequestHeader
    release loRest
    release loJson
    release loACellTowers
    release loOCellTower
    release loAWifi
    release loOPoint
    return
endif

loJson.EmitCompact = .F.
? "JSON request body: " + loJson.Emit()

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

? "JSON response: " + lcResponseJson

loJsonResp = createobject("CkJsonObject")
loJsonResp.Load(lcResponseJson)

loJsonLoc = createobject("CkJsonObject")
loJsonResp.ObjectOf2("location",loJsonLoc)

// Any JSON value can be obtained as a string..
lcLatitude = loJsonLoc.StringOf("lat")
? "latitude = " + lcLatitude
lcLongitude = loJsonLoc.StringOf("lng")
? "longitude = " + lcLongitude

lcAccuracy = loJsonResp.StringOf("accuracy")
? "accuracy = " + lcAccuracy


release loRest
release loJson
release loACellTowers
release loOCellTower
release loAWifi
release loOPoint
release loJsonResp
release loJsonLoc