Contentful entry field conversion? - data-conversion

I'm using contentful and want to convert some entry fields into more human readable content.
For example: I have a content type that has a field "location" that stores latitude and longitude. For us to display that in the app, i need that data to be converted into an adress. This can be done using the Google Maps API. How can I use the Google Maps API (or a third party API for other conversion cases) without having to build my own backend which retrieves data from contentful and then converts it.
Is there a way to do this with contentful?
Kind regards,
Erik

There is no way to do this with Contentful, it just allows you to store and retrieve that data.
But depending on your use case you could also use the Google Maps client side SDKs (iOS/Android/JS) to do this.

Related

How to retrieve images for a place using HERE Geocoding and Search api?

I am doing a POC for one of my projects using HERE Geocoding and Search api. I want to search places around a given latitude and longitude and need details of those places including an image/images.
I am using https://browse.search.hereapi.com/v1/browse?at=47.80049,3.57119&limit=2&categories=700-7600-0000,700-7600-0116&apiKey={YOUR_API_KEY} which returns all details of places but without image related details.
So I tried to use https://lookup.search.hereapi.com/v1/lookup?id=here:pds:place:276u33dc-2ba407e1181849c9a761a336b8df1805&apiKey={YOUR_API_KEY} where id is returned as one of the attributes in response of previous /browse call, but again this returns same details (without image) as retuned by /browse api.
I tried to follow this documentation https://developer.here.com/documentation/geocoding-search-api/migration_guide/migration-places/topics-api/place-details.html but it doesn't help much.
So is there a way to retrieve image/images for places using HERE Geocoding and Search api. I would be grateful if some one can share their experience or guide me to correct documentation.
The Media Type attributes are currently not returned in GS7 apis. The same is told in the below document.
https://developer.here.com/documentation/geocoding-search-api/migration_guide/migration-places/topics-api/place-details.html

Use Places API (Discover/Here) with Address instead of Lat/Long

I currently have a POC working that retrieves places information using the Places HERE api by passing Lat and Long values. Our addresses are being converted to lat and long before the api is called and we fear we might be losing precision in the process. Instead of feeding the API the coordinates, is there a way to send the actual address and get the address information back? Business name, type, etc?
res = requests.get('https://places.cit.api.here.com/places/v1/discover/here?app_id=<>&app_code=<>&at='+str(lat)+','+str(long))
Based on what I see in the API docs (https://developer.here.com/documentation/places/dev_guide/topics_api/resource-search.html) the answer is no. You can see more detail here as well: https://developer.here.com/documentation/places/dev_guide/topics/location-contexts.html. Is there a particular example of where you think geocoding is returning bad results?
Use Geocoder API to get coordinates for address and then use these coordinates to make a request to Places API.

Google translate API with annotations

When using the Google Translate API, it just returns one translation for a given word. For example, when I let it translate the English word "hide" to Italian, it just responds with "nascondere".
However, Google Translate on the web offers much more: they don't just show one translation (or list of possible translations), but also the frequency as well as the precise meaning of a specific translation:
I'd like to get these results via an API.
Is there a public API that offers the same results?
Of course, I could just use the endpoint /translate_a/single that is used by the Google Translate website. But this endpoint does not include an API key, so if I send too many requests, they will most likely block me.
Also, the endpoint /translate_a/single returns many fields of which I do not know the precise meaning, so its usage would most likely involve some reverse engineering.

Using the Googlemaps Geocoder and Storing the Data

I am building an Events site in which the address of a given event will be stored to be used within a map on the page. Whilst viewing an Individual Events' page i would like to provide a list of similar events on side of the page. I would also like to rank this list by distance and display a small map with a marker on it for each item on the list.
I was thinking of Geocoding the Events address upon content input and then storing this data within the sites database. Doing this would allow me to calculate the distance of an event on the server and then provide an ordered list to display.
My question is this:
Would this violate the Googlemaps Terms of Service?
These terms:
"the geocoder for any purpose other than obtaining locations that will be displayed using the Google Maps APIs is a violation of the Terms of Service. You may use the HTTP geocoder to geocode addresses outside of your Google Maps API application so that they may be cached and later displayed using one of the Google Maps APIs, but locations obtained using the Geocoding Web Service may not be used by any other application, distributed by other means, or resold."
Suggest that storing the data is not a problem but i am unsure that the process of ordering the list by long lat would not result in a violation.
Any advice would be greatly appreciated.
As long as the map your refer to in your question is a Google Map and you are using the geocoded data to display features on a Google Map, you are fine. The client-side google.maps.Geocoderdev-guide is intended for dynamic requests that are based on real-time user interaction that drives a need to perform on-the-fly geocoding. But Google encourages you to consider using the Geocoding Web Servicedev-guide on the server-side, when you wish to pre-geocode static addresses or coordinates prior to using the response values on a Google Map. Storing those values is assumed.
It is common to perform some form of post-response/post-storage processing on those values, just like the ordering by distance that you describe, to fit whatever use case is needed to populate your map with the appropriate data. I understand you want to be careful to remain within the TOS, but what you describe sounds pretty standard.

Google Maps JavaScript API v3 Places Library Usage Limits

I have a site that associates Google Place information with users, and displays that information on a map. For instance, a user can search for a place (currently with the Places Library Autocomplete API) and bookmark this place for later retrieval.
As per the Google Maps TOS, I am only storing the Place ID and its reference in my database and am making client-side requests for the coordinate information of each place whenever I need to display them on a map.
I've recently encountered an issue where making more than 10 consecutive API requests for coordinate information (within a javascript loop) using the getDetails method on the service object returns an OVER_QUERY_LIMIT status code.
My question is this: if I am correct in assuming that storing the latitude and longitude of each place in my database violates Google's TOS, how can I programmatically retrieve the coordinate information for a number of places so that I can display these places on a map for a given user?
According to the terms - 10.1.3(b) -
(b) No Pre-Fetching, Caching, or Storage of Content. You must not pre-fetch, cache, or store any Content, except that you may store: (i) limited amounts of Content for the purpose of improving the performance of your Maps API Implementation if you do so temporarily, securely, and in a manner that does not permit use of the Content outside of the Service; and (ii) any content identifier or key that the Maps APIs Documentation specifically permits you to store. For example, you must not use the Content to create an independent database of "places" or other local listings information.
So if there are places getting queried a lot, you can temporarily store information on that place to increase performance.

Resources