2

J'utilise la superposition Circle dans le cadre de la V3 de l'API Javascript Google Maps (c.-à-d. Voir ci-dessous - nous avons un appel ultérieur qui définit en fait radius/etc.) Pour afficher goe emplacements spatiaux dans notre application.Google Maps Circle Overlay et Vincenty Formula

var circle = new google.maps.Circle({ 
     fillColor: lCircleColor, 
     strokeWeight: 2 
    }); 

Nous avons aussi un processus de serveur d'arrière-plan qui calcule les distances de points du centre du cercle pour déterminer si les points tombent à l'intérieur ou à l'extérieur du cercle - lorsque les points tombent à l'intérieur nous élevons une alarme. Il y a un cas particulier où nous avons eu récemment un point (lat = 31.197163, lon = -83.87292) qui tombe juste à la frontière du cercle (lat = 31.1998, lon = -83.8738, rayon = 1000ft). Lorsque vous utilisez la formule de Haversine pour calculer la distance, la distance calculée est supérieure au rayon tandis que Vincenty (plus précise) la distance est inférieure au rayon, provoquant ainsi une alarme générée par le processus dorsal que le point tombe dans le lieu.

Ma question concerne la façon dont Google Maps affiche la superposition Circle. Quand nous le voyons dans notre application, il semble tomber juste à l'extérieur du cercle (seulement visible lorsque le zoom est le plus important). J'avais lu ailleurs que pour calculer la distance, les API de Google utilisent l'algorithme de Vincenty mais pour afficher leur superposition, prennent-elles une forme sphérique (et donc expliquent pourquoi le point semble tomber en dehors du cercle)?

+0

Juste à noter, ceci est probablement dû à une mauvaise correspondance dans votre implémentation des différents algorithmes avec des googles; par exemple. En outre, Haversine et Vincenty sont totalement indiscernables jusqu'à environ 8 décimales (~ 1,11 mm) mais les cartes api elles-mêmes n'ont qu'une précision de 6 décimales (~ 111 mm).) donc le niveau de précision de Vincenty n'est pas, comme je le vois, significatif pour l'affichage dans Google Maps. – Fraser

Répondre

0

Dans Google Maps API V3, ces fonctions sont déjà fournies dans l'espace de noms 'sphérique' de la bibliothèque google.maps.geometry. Cette bibliothèque n'est pas chargée par défaut lorsque vous chargez l'API Maps Javascript, mais elle doit être explicitement spécifiée à l'aide d'un paramètre bootstrap de bibliothèque.

http://code.google.com/apis/maps/documentation/javascript/geometry.html

fonctions Une fois chargés, tels que computeDistanceBetween(), computeHeading(), computeOffset(), interpoler(), sont tous disponibles.

Vous n'avez donc pas besoin d'implémenter vous-même d'algorithmes et l'utilisation des versions internes résoudra les problèmes que vous observez.