Sample code for 30+ languages & platforms
PowerShell

Google Maps Geolocation Request

See more REST Examples

Demonstrates how make a Google Maps Geolocation REST API request.

Chilkat PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $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.

$rest = New-Object Chilkat.Rest

# Connect to the Google API REST server.
$bTls = $true
$port = 443
$bAutoReconnect = $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
#   }
#  ]
# }

$json = New-Object Chilkat.JsonObject
$json.AppendInt("homeMobileCountryCode",310)
$json.AppendInt("homeMobileNetworkCode",260)
$json.AppendString("radioType","gsm")
$json.AppendString("carrier","T-Mobile")

$aCellTowers = New-Object Chilkat.JsonArray
$json.AppendArray2("cellTowers",$aCellTowers)

$oCellTower = New-Object Chilkat.JsonObject
$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)

$aWifi = New-Object Chilkat.JsonArray
$json.AppendArray2("wifiAccessPoints",$aWifi)

$oPoint = New-Object Chilkat.JsonObject
$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)

$responseJson = $rest.FullRequestString("POST","/geolocation/v1/geolocate",$json.Emit())
if ($rest.LastMethodSuccess -eq $false) {
    $($rest.LastErrorText)
    exit
}

# When successful, the response code is 200.
if ($rest.ResponseStatusCode -ne 200) {
    # Examine the request/response to see what happened.
    $("response status code = " + $rest.ResponseStatusCode)
    $("response status text = " + $rest.ResponseStatusText)
    $("response header: " + $rest.ResponseHeader)
    $("response JSON: " + $responseJson)
    $("---")
    $("LastRequestStartLine: " + $rest.LastRequestStartLine)
    $("LastRequestHeader: " + $rest.LastRequestHeader)
    exit
}

$json.EmitCompact = $false
$("JSON request body: " + $json.Emit())

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

$("JSON response: " + $responseJson)

$jsonResp = New-Object Chilkat.JsonObject
$jsonResp.Load($responseJson)

$jsonLoc = New-Object Chilkat.JsonObject
$jsonResp.ObjectOf2("location",$jsonLoc)

# Any JSON value can be obtained as a string..
$latitude = $jsonLoc.StringOf("lat")
$("latitude = " + $latitude)
$longitude = $jsonLoc.StringOf("lng")
$("longitude = " + $longitude)

$accuracy = $jsonResp.StringOf("accuracy")
$("accuracy = " + $accuracy)