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

Google Maps Geolocation Request

See more REST Examples

Demonstrates how make a Google Maps Geolocation REST API request.

Chilkat React Native Downloads

React Native
import { JsonArray, JsonObject, Rest } from '@chilkat/react-native'

async function chilkatExample() {
  // 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.

  const rest = new Rest();

  // Connect to the Google API REST server.
  const bTls = true;
  const port = 443;
  const bAutoReconnect = true;
  await rest.connectAsync('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
  //   }
  //  ]
  // }

  const json = new JsonObject();
  json.appendInt('homeMobileCountryCode', 310);
  json.appendInt('homeMobileNetworkCode', 260);
  json.appendString('radioType', 'gsm');
  json.appendString('carrier', 'T-Mobile');

  const aCellTowers = new JsonArray();
  json.appendArray2('cellTowers', aCellTowers);

  const oCellTower = new 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);

  const aWifi = new JsonArray();
  json.appendArray2('wifiAccessPoints', aWifi);

  const oPoint = new 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);

  let responseJson: string;
  try {
    responseJson = await rest.fullRequestStringAsync('POST', '/geolocation/v1/geolocate', json.emit());
  } catch {
    console.log(rest.lastErrorText);
    return;
  }

  // When successful, the response code is 200.
  if (rest.responseStatusCode !== 200) {
    // Examine the request/response to see what happened.
    console.log(`response status code = ${rest.responseStatusCode}`);
    console.log(`response status text = ${rest.responseStatusText}`);
    console.log(`response header: ${rest.responseHeader}`);
    console.log(`response JSON: ${responseJson}`);
    console.log('---');
    console.log(`LastRequestStartLine: ${rest.lastRequestStartLine}`);
    console.log(`LastRequestHeader: ${rest.lastRequestHeader}`);
    return;
  }

  json.emitCompact = false;
  console.log(`JSON request body: ${json.emit()}`);

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

  console.log(`JSON response: ${responseJson}`);

  const jsonResp = new JsonObject();
  jsonResp.load(responseJson);

  const jsonLoc = new JsonObject();
  jsonResp.objectOf2('location', jsonLoc);

  // Any JSON value can be obtained as a string..
  const latitude = jsonLoc.stringOf('lat');
  console.log(`latitude = ${latitude}`);
  const longitude = jsonLoc.stringOf('lng');
  console.log(`longitude = ${longitude}`);

  const accuracy = jsonResp.stringOf('accuracy');
  console.log(`accuracy = ${accuracy}`);
}