Dart Requires Chilkat v11.1.0+
Dart
Google Maps Geolocation Request
See more REST Examples
Demonstrates how make a Google Maps Geolocation REST API request.Chilkat Dart Downloads
import 'package:chilkat/chilkat.dart';
void main() {
// 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.
final rest = CkRest();
// Connect to the Google API REST server.
final bTls = true;
final port = 443;
final bAutoReconnect = true;
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
// }
// ]
// }
final json = CkJsonObject();
json.appendInt('homeMobileCountryCode', 310);
json.appendInt('homeMobileNetworkCode', 260);
json.appendString('radioType', 'gsm');
json.appendString('carrier', 'T-Mobile');
final aCellTowers = CkJsonArray();
json.appendArray2('cellTowers', aCellTowers);
final oCellTower = CkJsonObject();
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);
final aWifi = CkJsonArray();
json.appendArray2('wifiAccessPoints', aWifi);
final oPoint = CkJsonObject();
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);
final String responseJson;
try {
responseJson = rest.fullRequestString('POST', '/geolocation/v1/geolocate', json.emit());
} on ChilkatException catch (e) {
print(e.lastErrorText);
return;
}
// When successful, the response code is 200.
if (rest.responseStatusCode != 200) {
// Examine the request/response to see what happened.
print('response status code = ${rest.responseStatusCode}');
print('response status text = ${rest.responseStatusText}');
print('response header: ${rest.responseHeader}');
print('response JSON: $responseJson');
print('---');
print('LastRequestStartLine: ${rest.lastRequestStartLine}');
print('LastRequestHeader: ${rest.lastRequestHeader}');
return;
}
json.emitCompact = false;
print('JSON request body: ${json.emit()}');
// The JSON response should look like this:
// {
// "location": {
// "lat": 37.4248297,
// "lng": -122.07346549999998
// },
// "accuracy": 1145.0
// }
print('JSON response: $responseJson');
final jsonResp = CkJsonObject();
jsonResp.load(responseJson);
final jsonLoc = CkJsonObject();
jsonResp.objectOf2('location', jsonLoc);
// Any JSON value can be obtained as a string..
final latitude = jsonLoc.stringOf('lat');
print('latitude = $latitude');
final longitude = jsonLoc.stringOf('lng');
print('longitude = $longitude');
final accuracy = jsonResp.stringOf('accuracy');
print('accuracy = $accuracy');
}