Auto Zoom et recadrage intelligent sur une carte Google Map
Les utilisateurs de l’API Google Map sont souvent confrontés à un problème lorsqu’ils ont beaucoup de marqueurs sur une carte google map et qu’ils n’arrivent pas à avoir un cadrage cohérent et un zoom approprié.
En effet, on peut remédier à ce problème grâce aux mathématiques : il suffit de prendre le point central entre les 2 points les plus éloignés et d’ajuster le zoom en fonction de la distance entre ces 2 derniers.
Le script suivant vous montre comment calculer le zoom et les coordonnées du cadrage le plus approprié à partir d’un ensemble de marqueurs. Cette fonctionnalité est disponible sur PhoogleMap.
public function enableAutoZoom ()
{
$latitude_array = array();
$latitude_array = array();
foreach ($this->validPoints as $key => $value)
{
$latitude_array[] = $value['lat'];
$longitude_array[] = $value['long'];
}
$minimal_latitude = min ($latitude_array);
$maximal_latitude = max ($latitude_array);
$minimal_longitude = min ($longitude_array);
$maximal_longitude = max ($longitude_array);
$central_latitude = $minimal_latitude + ($maximal_latitude - $minimal_latitude) / 2;
$central_longitude = $minimal_longitude + ($maximal_longitude - $minimal_longitude) / 2;
$miles = (3958.75 * acos(sin($minimal_latitude / 57.2958) * sin($maximal_latitude / 57.2958) + cos($minimal_latitude / 57.2958) * cos($maximal_latitude / 57.2958) * cos($maximal_longitude / 57.2958 - $minimal_longitude / 57.2958)));
switch ($miles)
{
case ($miles < 0.2):
$zoom = 2;
break;
case ($miles < 0.5):
$zoom = 3;
break;
case ($miles < 1):
$zoom = 3;
break;
case ($miles < 2):
$zoom = 4;
break;
case ($miles < 3):
$zoom = 5;
break;
case ($miles < 7):
$zoom = 6;
break;
case ($miles < 15):
$zoom = 8;
break;
case ($miles < 50):
$zoom = 9;
break;
case ($miles < 300):
$zoom = 12;
break;
case ($miles < 600):
$zoom = 14;
break;
default:
$zoom = 16;
break;
}
$this->centerMap($central_latitude, $central_longitude);
$this->zoomLevel = $zoom;
}
Cette entrée a été posté par
admin le 29 juillet 2009 à 20 h 09 min, et placée dans
PHP. Vous pouvez suivre les réponses à cette entrée via
RSS 2.0. Vous pouvez
laisser une réponse, ou bien un
trackback depuis votre site.
Aucun trackback pour l'instant
Une rumeur circule depuis quelques temps, à propos d’une ré-inventation de PHP par Facebook pour optimiser les performances de leurs applications. Cette dernière a été désormais par la firme, un ingénieur a travaillé sur une refonte de la runtime de PHP afin d’avoir un résultat compilé et non plus interprété comme c’est le cas actuellement [...]
Un point essentiel à ne pas négliger sur une application Web est la ré-écriture d’URL via un système de routeur. Pourquoi ré-écrire des Urls alors que l’utilisateur n’en tape jamais directement ? Et bien tout simplement, parce que l’utilisateur ne comprend pas forcement où il se trouve sur le site en regardant une Url de [...]
A l’heure où les environnements de développement pour PHP sont majoritairement basé sur Eclipse : PHP Development Tools, Aptana et Zend Studio, Netbeans quant à lui se faisait très discret dans le domaine des IDE PHP.
Voici la nouvelle version de NetBeans en release 6.8 avec des outils de développement pour PHP 5 fort intéressants :
Tout [...]
Nouvelle version de Phoogle Map 2.1 toujours basée sur l’API Google Map en version 2.0, cette nouvelle version offre une compatibilité avec PHP 5.3.
La sortie de cette nouvelle version s’accompagne d’une amélioration de la rubrique PhoogleMap sur le site avec des exemples téléchargeables, des sources mises à jour, une présentation approfondie, une PHP Doc [...]
3 octobre 2009 - 18 h 01 min
Tags: Adobe Spry, aptana, Dojo, eclipse, IDE, jQuery, Mootools, PHP, Prototype, python, ruby, ruby on rails, sdk
Posté dans IDE | 3 commentaires
Aptana Studio est un IDE (Environnement de Développement orienté) Web 2.0 et basé sur les fondations d’Eclipse. Son principal avantage est qu’il n’utilise pas les plugin’s traditionnels d’Eclipse au profit de plugin’s développés par aptana qui sont beaucoup plus performants et plus astucieux.
Le logiciel est un environnement complet pour :
- PHP (sans passer le PDT [...]
Sympal est un projet très intéressant de Sensio Labs (société de services à l’origine de Symfony et Doctrine), un plugin très sérieux pour intégrer un CMS dans une application Symfony ! Apparement, on peut supposer au nom que ce projet va reprendre certaines caractéristiques du CMS Drupal mais il n’y aura aucun code de Drupal [...]
2 septembre 2009 - 13 h 54 min
Tags: PHP, Zend Framework
Posté dans Non classé, Zend Framework | 2 commentaires
Nouvelle version de Zend Framework, elle corrige une quarantaine de bugs
Voici la liste issue de la changelog…
Bugs corrigés :
[ZF-7605]: Zend_Application docs mistake
[ZF-7550]: Bootstrap fails after checking out r17414
[ZF-7417]: clarify confusion between ‘resource plugins’ and ‘resources’ in docs
[ZF-7401]: Errors in QuickStart
[ZF-7158]: No automatic creation of Zend_Application_Module_Autoloader for default module
[ZF-7095]: Zend_Application_Resource_Modules [...]
1 septembre 2009 - 14 h 50 min
Tags: cachegrid, debug, PHP, profiling, var_dump, Xdebug
Posté dans PHP | Aucun commentaire
Comme dans tous les langages PHP possède des outils de debugage et de profilage pour optimiser vos applications.
Il existe bien évidement celui de Zend qui est founit avec PHP, cela dit il existe également Xdebug qui est un excellent outil permettant de se configurer sur Eclipse pour faire du debug, d’améliorer les var_dump en [...]
Dans une application, il est impératif de se soucier de la portabilité de son application et de son aptitude à s’intégrer à plusieurs système de base de données. Pour cela, il faut gérer les transactions avec cette dernière avec un outil indépendant d’une base de données.
On appelle cela une couche d’abstraction qui sert intermédiaire entre [...]
28 août 2009 - 8 h 57 min
Tags: DAO, Doctrine, ORM, PHP, Symfony
Posté dans PHP | 4 commentaires
Doctrine ORM PHP 5 dors et déjà présent sur le framework Symfony, prépare une nouvelle version majeure du projet : Doctrine 2.0
Cette nouvelle version exclusivement compatible avec PHP 5.3 au minimum s’avère assez prometteuse et assez ambitieuse.
Petit rappel sur Doctrine : ce projet a été conçu tout comme Propel (basé sur Active Record) dans un [...]