Places and coordinates (v2.1.x - Android)

Places and coordinates (v2.1.x - Android)

Coordinates

Geo locations in Navmii SDK are represented as instances of the read-only MapCoordinates class. It has three methods: getLatitude (returns values in the range [-90, 90]), getLongitude (returns values in the range [-180, 180)) and getDistanceTo.

getDistanceTo calculates the distance between the current point and a specified point, returning the result in meters. This method computes the geographical distance using the latitude and longitude values provided in the MapCoordinates object.

Example:

// New York City coordinates MapCoordinates destination = new MapCoordinates(40.7128, -74.0060); double distance = currentLocation.getDistanceTo(destination); System.out.println("Distance: " + distance + " meters");

Navmii SDK also has the MapRectangle class representing a rectangle area on the map. It can be created by specifying its top left and bottom right corners.

// Creates a MapRectangle by specifying top left and bottom right corners MapCoordinates topLeft = new MapCoordinates(51.50884, -0.12924); MapCoordinates bottomRight = new MapCoordinates(51.50754, -0.12699); MapRectangle rectangle = new MapRectangle(topLeft, bottomRight);

Places

Navmii SDK provides a set of classes responsible for representation of addresses an places of interest (POIs). The most basic classes to represent geographical entities are CityState, and CountryCity contains the following information on a city:

  • name

  • transliterated name

  • city class (an integer taking values from -1 to 15 and representing the size of the city)

  • if the city is a capital

Log.i("City", String.format("city name - %s", city.getName())); Log.i("City", String.format("transliterated city name - %s", city.getTransliteratedName())); Log.i("City", String.format("city class - %s", city.getCityClass())); Log.i("City", String.format("is capital - %s", city.isCapital()));

You can retrieve a state's

  • code

  • name

from State.

Log.i("State", String.format("state name - %s", state.getName())); Log.i("State", String.format("state code - %s", state.getCode()));

And from Country you can fetch:

  • ISO 3 Code

  • name

  • extended info

Extended info for a Country is a CountryInfo instance containing in its turn the following information:

  • country's speed units

  • country's distance units

  • country's driving side

Log.i("Country", String.format("country ISO 3 code - %s", country.getIso3Code())); Log.i("Country", String.format("country name - %s", country.getName())); Log.i("Country", String.format("country speed units - %s", country.getInfo().getSpeedUnits())); Log.i("Country", String.format("country distance units - %s", country.getInfo().getDistanceUnits())); Log.i("Country", String.format("country driving side - %s", country.getInfo().getDrivingSide()));

Addresses

The CityState and Country classes are aggregated into Address class. The Address also provides:

  • county name

  • district name

  • administrative hierarchy

  • street name

  • route number

  • house number

Log.i("Address", String.format("country name - %s", address.getCountry().getName())); Log.i("Address", String.format("state name - %s", address.getState().getName())); Log.i("Address", String.format("district name - %s", address.getDistrict())); Log.i("Address", String.format("county name - %s", address.getCounty())); Log.i("Address", String.format("city name - %s", address.getCity().getName())); Log.i("Address", String.format("administrative hierarchy - %s", address.getAdminHierarchy())); Log.i("Address", String.format("street name - %s", address.getStreet())); Log.i("Address", String.format("route number - %s", address.getRouteNumber())); Log.i("Address", String.format("house number - %s", address.getHouseNumber()));

Places of Interest

When working with Navmii SDK search services you will also meet Place instances. They represent places of interest (POIs). A Place instance can provide you with the following info:

  • POI's name

  • place type

  • geographical location

  • POI's address

  • a boolean value indicating if the address is approximated

  • POI data

POI data for a particular place is a PoiData instance containing an integer indicating the place's primary category number and an array with numbers of all categories associated with the place.

Log.i("Place", String.format("place name - %s", place.getName())); Log.i("Place", String.format("place type - %s", place.getType())); Log.i("Place", String.format("coordinates - %s", place.getCoordinates())); Log.i("Place", String.format("address - %s, %s", place.getAddress().getStreet(), place.getAddress().getHouseNumber())); Log.i("Place", String.format("is address approximated - %s", place.isAddressApproximated())); Log.i("Place", String.format("POI category - %s", place.getPoiData().getPrimaryCategory())); for (int category : place.getPoiData().getCategories()) { Log.i("Place", "POI belongs to category " + category); }

A place can also have a display address, which is a string shown to the user. It can be accessed using the Place.getDisplayAddress() method.

Images

A place can have a set of images associated with it. To access them you can use Place.getImages() method, which returns an array of PlaceImage objects containing the following fields:

  • image URL

  • thumbnail URL (optional)

  • image description (optional)