lundi 5 septembre 2016

A propos de la librairie Google Maps SDK pour iOS

Les ingénieurs de Google viennent d'ajouter un marqueur de "Cluster" dans la librairie du Google Maps SDK pour iOS ! Cette fonctionnalité très demandée est maintenant disponible pour iOS en plus d'Android et de JavaScript.

N'avez-vous jamais eu l'impression que votre carte présente trop de marqueurs (les pinpoints ou les symboles de vos points d'intérêts), ce qui en fait une carte encombrée et difficile à lire ou à comprendre ? Ou peut-être avez-vous déjà souhaité afficher sur une carte de nombreux points d'intérêts (comme tous les restaurants populaires de votre ville par exemple), tout en souhaitant qu'elle reste claire ?

Le marqueur de "Cluster" vous aide à obtenir ce résultat. Quand le niveau du zoom change (en avant ou en arrière), vous pouvez agréger les marqueurs, indiquant clairement à vos utilisateurs exactement où se trouvent les points d'intérêts représentés. Au fil du zoom avant, les marqueurs se séparent progressivement jusqu'à ce que tous les marqueurs individuels soient affichés sur la carte. Et ceci de façon dynamique et rapide.

Grâce à la nouvelle fonctionnalité de clustering dans la librairie du Google Maps SDK pour iOS, le processus en 4 étapes est facile à mettre en oeuvre :
  • Ajouter 'Google-Maps iOS-Utils' à votre Podfile
  • Instanciez GMUClusterManager
  • Implémentez le protocole GMUClusterItem pour vos objets marqueurs
  • Ajoutez les objets marqueurs au gestionnaire de cluster
Google fournit l'algorithme par défaut, "renderer" et "générateur d'icône" pour vous aider. En outre, vous pouvez également totalement personnaliser chacun de ces éléments en étendant les implémentations par défaut, ou en fournissant votre propre implémentation de ces protocoles :  GMUClusterAlgorithmGMUClusterRenderer,GMUClusterIconGenerator.

Jetez un oeil à la documentation et aux démos, et commencez à utiliser le marquer de "cluster" dans la librairie Google Maps SDK pour iOS dès aujourd'hui !

dimanche 4 septembre 2016

Google Places API pour iOS & Google Maps SDK pour iOS sont maintenant dans des CocoaPods distincts

Vous ne savez pas ce qu'est un CocoaPods ? Il s'agit simplement d'un gestionnaire de bibliothèques iOS ;-)

Depuis quelque semaines, l'API Google Places pour iOS 2.0 et le SDK Google Maps pour iOS 2.0 sont dans des CocoaPods distincts. Pour les développeurs qui utilisent uniquement l'API Google Places pour iOS, cela permettra de réduire considérablement la taille binaire de leurs applications.


Qu'est ce que cela signifie pour moi ? Que dois-je faire ?

Rien pour le moment au sujet de votre implémentation actuelle, mais Google vous suggérera fortement de faire une mise à jour l'année prochaine avec le nouveau SDK Google Maps pour iOS 2.0 et Google Places API pour iOS 2.0. Le SDK Google Maps pour iOS Version 1.x ne sera plus supporté d'ici l'année prochaine.

Si vous utilisez Google Maps SDK pour iOS 1.x (Standard Plan) et que vous n'avez pas spécifié une version dans votre PODFILE, vous serez automatiquement mis à niveau vers le nouveau SDK Google Maps pour iOS 2.0 lorsque vous exécuterez "mise à jour du pod". Si vous utilisez une fonctionnalité "Places", voici un guide pour l'API Places pour vous guider dans le processus de migration vers la nouvelle API Google Places pour iOS 2.0.


En outre, voici recensé comment extraire tous les frameworks (MapsPlaces) des CocoaPods, de sorte que vous pourrez inclure manuellement les SDKs dans votre projet plutôt que d'utiliser les CocoaPods. [Issue 8856]


Qu'est ce que cela signifie pour les clients du Google Maps SDK Premium Plan ?

Il n'y a plus de Google Maps SDK Premium Plan distinct. Il a été remplacé par le nouveau Google Maps SDK pour iOS 2.0  à la fois pour les développeurs du Premium Plan et du Standard Plan.

Google a créé un guide de migration qui vous guide dans les étapes du processus de migration vers le nouveau Google Maps SDK pour iOS 2.0. Les ingénieurs de Google ont également documenté comment extraire les frameworks des CocoaPods de sorte que vous pourrez inclure manuellement les SDKs dans votre projet si vous préférez. La clé professionnelle de votre licence Google Maps API va continuer à servir, comme votre Premium Plan.




Note : Le Google Maps SDK pour iOS Premium Plan 1.13.2 (version actuelle) sera pris en charge pour une année encore ; Google suggère de profiter de cette année pour mettre à jour les applications avec le nouvel SDK Google Maps pour iOS 2.0. 


Jetez un oeil aux notes concernant les versions et commencez à utiliser la version 2.0 dès aujourd'hui !

jeudi 11 août 2016

Découvrez ce qu'il se passe autour de vous avec la nouvelle mise à jour de Google Maps

C'est Zhou Bailiang, UX Designer (équipe Google Maps) et Mark Li, Software Engineer (équipe Google Local) qui l'ont annoncé très récemment.
Le monde (réel) change à chaque seconde et Google Maps est en train de changer avec. Le plus souvent, ces changements se produisent en coulisses, en silence, sous la forme de fermetures de routes ou de nouvelles entreprises qui apparaissent. Mais aujourd'hui, Google annonce de nouveaux changements sur son produit phare, Google Maps. Ces changements et ajouts visuels à Google Maps sont d'ores et déjà disponibles sur les versions Web, Android et iOS, de sorte à vous aider à mieux explorer le monde autour de vous.

Un look plus épuré
Le monde est plein d'informations, ce qui signifie que les mettre en évidence sur une carte est un dilemme permanent pour le cartographe, qui doit faire des choix. Ceci d'abord pour que la carte ne soit pas surchargée, qu'elle reste lisible et compréhensible par tous (sans légende si possible). C'est donc un acte d'équilibriste qu'il convient de mettre en place ! Surtout quand on gère une planète entière, la Terre en l'occurence.
Ainsi, dans le cadre de cette nouvelle mise à jour, les ingénieurs de Google ont choisi de supprimer des éléments qui ne sont absolument pas nécessaires à la bonne lecture de la carte (comme les contours de la route par exemple). Le résultat offre un aspect plus épuré, ce qui rend plus facile la lecture des informations utiles et exploitables comme le trafic routier et les transports en commun. De la même façon, Google a amélioré la typographie des toponymes et autres odonymes et de tout ce qui est inscrit sur la carte (noms de rues, des points d'intérêt, des stations de transport en commun, et plus encore) pour les rendre plus faciles à distinguer des autres choses, pour vous aider à naviguer avec toujours plus d'informations utiles et précises, et avec moins de distractions.


Centres d'intérêt
Ce toilettage permet aussi de mettre en évidence les informations locales de façon entièrement nouvelle. Quand vous explorez la carte, vous pouvez dorénavant remarquer les zones ombrées en orange représentant les "zones d'intérêt" - dans un endroit où il y a beaucoup d'activités et de choses à faire. Pour trouver une "zone d'intérêt" il suffit d'ouvrir Google Maps et de regarder autour de vous (autour de l'endroit où Google Maps vous localise via les capteurs de votre smartphone). Lorsque vous avez trouvé une zone orangée, zoomez pour voir plus de détails sur chaque site et appuyez sur l'un des point d'intérêt des alentours pour obtenir plus d'informations. Que vous soyez à la recherche d'un hôtel dans un endroit populaire ou tout simplement que vous essayez de déterminer le chemin à suivre après la sortie du métro pour un nouvel endroit, les "zones d'intérêt" vous aideront à trouver ce que vous cherchez en quelques clics et un zoom.



Google détermine les «zones d'intérêt» avec un processus algorithmique qui permet de mettre en évidence automatiquement les zones ayant la plus forte concentration de restaurants, de bars et de boutiques. Dans les zones à haute densité comme New York City par exemple, se sont les cartographes de Google qui traitent l'information, afin d'être sur de montrer les zones les plus actives.

Des couleurs plus subtiles et mieux équilibrées
Le nouveau Google Maps offre une palette de couleurs plus subtile, pour vous aider à différencier facilement les éléments artificiels ou naturels cartographiés, et à identifier rapidement les lieux et autres points d'intérêt comme les hôpitaux, les écoles ou les autoroutes. Dans le cas où vous seriez curieux, voici un nuancier montrant ce que chaque couleur représente sur la carte.
Enfin, Google Maps vous fournit déjà tout ce qu'il faut pour se déplacer dans le monde, sur une seule et même interface, en proposant des informations sur les zones commerciales - y compris des notes et commentaires, pour plus de 100 millions d'endroits distincts. Et avec cette nouvelle mise à jour, il est maintenant encore plus facile de vous promener à l'endroit que vous souhaitez découvrir.

mardi 2 août 2016

Marqueur Z-Index et bien d'autres choses encore avec l'API Google Maps Android

Rendue publique récemment, la dernière version de l'API Google Maps Android comprend plusieurs fonctionnalités devenues très vite populaires auprès de la communauté des Développeurs, dont la possibilité de gérer l'affichage des marqueurs sur la carte avec le nouveau marqueur Z-Index, la possibilité de régler la transparence des tuiles superposées, et un nouveau clic en cercle.


Marqueur Z-Index

Le Marqueur Z-Index est l'une des fonctionnalités les plus demandées sur le système de suivi des demandes mis en place par Google à la disposition de la communauté des Développeurs du monde entier - sa mise à disposition donne ainsi la possibilité de contrôler l'ordre dans lequel les marqueurs sont affichés sur la carte [Issue 7762]. Cela donne le contrôle sur quel élément de la carte cibler pour l'utilisateur, en définissant une propriété spécifique pour chaque marqueur. Les marqueurs sont dessinés dans l'ordre du zIndex, avec le marqueur zIndex le plus élevé sur le dessus.


animated image with cars moving over a plane

animated image with cars moving under a plane thanks to zIndex

Avant : Aucun contrôle sur le marqueur Z-Index. L'avion sera occulté par les voitures.Après : Le marqueur Z-Index de l'avion est réglé pour être le plus  élevé. L'avion est maintenant toujours visible, car au-dessus du reste.

Transparence des tuiles superposées

Vous pouvez maintenant définir la transparence de vos tuiles pour permettre à la "basemap", c'est-à-dire au fonds de plan, d'être une couche parmi d'autres, et de se trouver tout en dessous de la liste des couches que vous gérez [Issue 4765].
 

Cercle "cliquable"

Tout comme les polylignes et les polygones, les applications compilées avec la dernière version peuvent maintenant avoir un cercle "cliquable" via OnCircleClickListener. Vous pouvez activer ou désactiver la "cliquabilité" des cercles en appelant setClickable(booléen)sur le cercle pertinent.

getMapAsync() dorénavant requis

En décembre 2014, Google a déprécié getMap () en faveur de getMapAsync(). A partir de cette version, vous aurez besoin d'utiliser getMapAsync() afin de compiler vos applications. Notez que les applications existantes déployées sur les appareils de vos utilisateurs ne seront pas touchées par ce changement car getMap()existe toujours dans les services du Google Play APK qui est livré aux appareils Android.

Si vous ne l'avez pas déjà fait, procédez comme suit :


Voici un petit bout d'échantillon en utilisant getMap()dépréciée, avec un procédé fictif doStuff() qui mettrait en œuvre la logique initiale du fragment :
import android.os.Bundle;
 import android.support.v4.app.FragmentActivity;
 import com.google.android.gms.maps.GoogleMap;
 import com.google.android.gms.maps.SupportMapFragment;

 public class MainActivity extends FragmentActivity {

     private GoogleMap mMap;

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
         doStuff();
     }

 }

Ci-dessus un exemple sujet aux erreurs, puisque getMap()pourrait retourner un "null". Voici le même échantillon en utilisant getMapAsync():

import android.os.Bundle;
 import android.support.v4.app.FragmentActivity;
 import com.google.android.gms.maps.GoogleMap;
 import com.google.android.gms.maps.OnMapReadyCallback;
 import com.google.android.gms.maps.SupportMapFragment;

 public class MainActivity extends FragmentActivity implements OnMapReadyCallback {

     private GoogleMap mMap;

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMapAsync(this);
     }

     @Override
     public void onMapReady(GoogleMap map) {
         mMap = map;
         doStuff();
     }

 }


Vous pouvez voir que Google met en œuvre l'interface OnMapReadyCallback qui définit la méthode onMapReady(), et qui sera appelée lorsque l'instance GoogleMap sera prête. Google a également déplacé l'appel à la méthode fictive doStuff() dans onMapReady(), puisque c'est là que la logique initiale du fragment commence.

Les notes concernant les différentes versions, contiennent des détails sur les bugs corrigés, les avis de fin de vie, ainsi que les caractéristiques mentionnées dans cet article. Jetez un oeil et commencez à utiliser ces nouvelles fonctionnalités dès aujourd'hui!

Google remercie les développeurs Android, qui partout dans le monde utilisent l'API Google Maps Android et envoient leurs commentaires sur le système de suivi des demandes.


Nos notes de version contiennent des détails sur les bogues corrigés, les avis de désapprobation, ainsi que les caractéristiques mentionnées dans cet article. Jetez un oeil et commencer à utiliser nos nouvelles fonctionnalités dès aujourd'hui !

dimanche 31 juillet 2016

Prédire le futur avec les API Google Maps

La planification des tournées, voyages et autres itinéraires a toujours été un art difficile, car les conditions de circulation varient considérablement au fil du temps. Mais aussi car chacun possède ses propres contraintes. Ainsi, la majeure partie des progiciels du marché se base sur des algorithmes calculant un trajet théorique ou un trajet statistique. Cependant, de très nombreux développeurs utilisent depuis des années déjà, les données de trafic en temps réel de l'API Google Maps pour aider les conducteurs à traiter ce problème de façon réactive et à être plus précis. Mais jusqu'à récemment, cette méthode était valable et disponible pour les trajets dont les départs étaient proches du moment de la planification.
C'est Elena Kelareva, Product Manager de Google Maps APIs, qui a rendu publique l'information il y a quelques temps. Les ingénieurs de Google ont décidé d'étendre les prévisions de trafic dans les API Google Maps, indéfiniment dans l'avenir - une caractéristique que nous appellerons le temps de déplacement prédictif. Cela va permettre aux développeurs de planifier les heures de voyage des jours voire des semaines à l'avance, en utilisant le modèle de Google, avec les conditions de circulation de ce jour-là. Ce modèle prend également en compte toutes les caractéristiques de la circulation dans l'API Directions et l'API Distance Matrix, et permet l'augmentation de la limite des points intermédiaires (les "stops") dans l'API Directions. On passe ainsi de 8 à 23 points intermédiaires.

Utiliser ces nouvelles fonctionnalités concernant la circulation est très simple : il suffit d'ajouter le paramètre departure_time à une requête de l'API Directions ou de l'API Distance Matrix, et les résultats contiendront l'estimation du temps de voyage en tenant compte des conditions de circulation prévus à cette date. La route de retour peut également varier en fonction des conditions de circulation, ce qui permet aux développeurs de recommander l'itinéraire le plus rapide à leurs utilisateurs. Par exemple, l'image ci-dessous montre l'itinéraire le plus rapide de l'Aéroport International de San Francisco vers le campus de Google à Mountain View tard dans la nuit quand il n'y a pas de trafic (bleu), et pendant les heures de pointe quand un accident sur l'Autoroute 101 a ralenti la circulation (rouge).
Screen Shot 2015-11-10 at 8.26.11 PM.png
Du fait que les conditions de circulation futures peuvent varier considérablement, les développeurs peuvent désormais définir un paramètre optionnel traffic_model pour choisir si ils préfèrent obtenir une estimation du temps de voyage optimiste,  pessimiste ou best_guess. Par exemple, un des clients de Google, Redfin, envisage d'utiliser les APIs Google Maps pour prédire combien de temps il faudra à ses commerciaux pour conduire entre deux maisons (lors de rdv de visites immobilières), et d'utiliser le modèle de trafic pessimiste pour s'assurer qu'il y a assez de temps de voyage entre deux visites, tout en tenant compte du trafic réel et de l'historique. Un autre exemple concerne un développeur souhaitant mettre au point une application domotique innovante de thermostat. Il veut que la maison des utilisateurs de l'application soit à la bonne température (et se réchauffe donc) au moment où ils rentrent du travail. Ce développeur utilisera le modèle d'estimation optimiste pour évaluer le temps de voyage de l'utilisateur susceptible de rentrer à la maison le premier, de sorte à rallumer le thermostat au bon moment pour atteindre la température idéale à son arrivée. Ce type d'application peut faire économiser plus de 20% d'énergie à son propriétaire...

Le modèle de trafic par défaut, best_guess, renvoie le temps de voyage le plus probable étant donné tout ce qui est connu sur les conditions à la fois de circulation prévue par le modèle historique pour le jour de la semaine et l'heure demandés, mais aussi sur les conditions de circulation en temps réel au moment de la requête. Cela peut donc être utilisé dans des applications qui donnent aux conducteurs une indication de ce que leur temps de voyage sera très probablement.

Pour en savoir plus sur les caractéristiques prédictives de la circulation routière avec l'API Google Maps, consultez cette vidéo, ou les documentations de l'API Directions, l'API Distance Matrix, de l'API Javascript Directions et des webservices Distance matrix ou téléchargez les librairies clientes mises à jour pour Java ou Python.