Matt Weber
Matt Weber

Reputation: 2868

How can I get all cities within a given radius of a given city from the HERE API?

I need to be able to give a City/State or Postal Code and an Integer for the radius and return all cities/postal codes within the given radius using HERE but the Documentation seems to be unclear.

https://geocoder.api.here.com/6.2/reversegeocode.json?app_id=xxx&app_code=xxxx

The return is:

<ns2:Error xmlns:ns2="http://www.navteq.com/lbsp/Errors/1" type="PermissionError" subtype="InvalidCredentials">
  <Details>invalid credentials for xxxxxxx</Details>
</ns2:Error>

But when I use

https://geocoder.api.here.com/6.2/geocode.json?app_id=xxx&app_code=xxxx

I get data back.

It is worth mentioning I am on the Freemium Package for the REST API

So first why can't I get data back from the Reverse Geo Code API?

And what is the appropriate string to accomplish the above?

Update:

Leaving the rest here in case someone else runs into this. To use Reverse Geo Code the API Route is actually

https://reverse.geocoder.api.here.com/6.2/reversegeocode.json

Though I still need some help on how to get the Radius Data

Update 2:

https://reverse.geocoder.api.here.com/6.2/reversegeocode.json?app_id=x&app_code=x&level=city&mode=retrieveAreas&prox=52.5309,13.3847,80467.2

Returns:

{
  "Response": {
    "MetaInfo": {
      "Timestamp": "2019-04-27T17:47:41.043+0000"
    },
    "View": [
      {
        "_type": "SearchResultsViewType",
        "ViewId": 0,
        "Result": [
          {
            "Relevance": 1,
            "Distance": 0,
            "Direction": 0,
            "MatchLevel": "district",
            "MatchQuality": {
              "Country": 1,
              "State": 1,
              "County": 1,
              "City": 1,
              "District": 1,
              "PostalCode": 1
            },
            "Location": {
              "LocationId": "NT_0ES-GaH3lZzJCuLQBrdw7C",
              "LocationType": "point",
              "DisplayPosition": {
                "Latitude": 52.5309,
                "Longitude": 13.3847
              },
              "MapView": {
                "TopLeft": {
                  "Latitude": 52.54063,
                  "Longitude": 13.36566
                },
                "BottomRight": {
                  "Latitude": 52.50407,
                  "Longitude": 13.42964
                }
              },
              "Address": {
                "Label": "Mitte, Berlin, Deutschland",
                "Country": "DEU",
                "State": "Berlin",
                "County": "Berlin",
                "City": "Berlin",
                "District": "Mitte",
                "PostalCode": "10178",
                "AdditionalData": [
                  {
                    "value": "Deutschland",
                    "key": "CountryName"
                  },
                  {
                    "value": "Berlin",
                    "key": "StateName"
                  },
                  {
                    "value": "Berlin",
                    "key": "CountyName"
                  }
                ]
              },
              "MapReference": {
                "ReferenceId": "53500282",
                "SideOfStreet": "neither",
                "CountryId": "20147700",
                "StateId": "20187401",
                "CountyId": "20187402",
                "CityId": "20187403",
                "DistrictId": "20187417"
              }
            }
          }
        ]
      }
    ]
  }
}

The documentation says to put in coordinates and a radius, that's 50 miles, so not sure why I am only receiving 1 city, Berlin, in the response.

Update 3:

https://reverse.geocoder.api.here.com/6.2/multi-reversegeocode.json?app_id=x&app_code=x&level=city&mode=retrieveAreas&prox=60.5544,-151.2583,80000

Tried with multi-reversegeocode

Return is: {}

Upvotes: 1

Views: 2340

Answers (1)

Michel
Michel

Reputation: 28359

Get cities in a proximity radius

Use the Reverse Geocode endpoint with the following parameters

https://reverse.geocoder.api.here.com/6.2/reversegeocode.json?
prox=52.5309,13.3847,80500   /* Note: 80.5 km around Berlin */
&app_id=YOUR_APP_ID
&app_code=YOUR_APP_CODE
&mode=retrieveAreas
&level=city
&gen=9

In short, your example in "Update 2" is correct, besides that it is missing the gen query parameter. Indeed, as per the API Reference, the query parameter level is valid only in combination with gen=2 or higher.

Upvotes: 2

Related Questions