google maps milieu d'une polyligne (centre de gravité?)
J'ai une liste de polylignes, à l'instar de google maps n' quand je clique sur la polyligne je veux une infowindow pour montrer jusqu'où j'ai cliqué, et il fonctionne très bien avec cette fonction
function mapsInfoWindow(polyline, content) {
google.maps.event.addListener(polyline, 'click', function(event) {
infowindow.content = content;
infowindow.position = event.latLng;
infowindow.open(map);
});
}
le problème vient quand je clique sur la liste(à l'aide de la même fonction pour ça), événement n'est évidemment pas le latLng, mais j'aimerais infowindow à apparaître dans le milieu de la polyligne de toute façon, comme il le fait lorsque vous cliquez sur la liste dans le lien google maps Je l'ai mentionné avant.
Essayé LatLngBounds(); mais qui donne la actuall centre de la zone de la polylignes créer, et non pas le moyen dont j'ai besoin.
Aucune idée de comment le faire?
Était vraiment surtout de se demander si l'api en elle-même peut aider avec elle.. apparemment ça ne marche pas. Je vais regarder dans ce lien, merci.
gis.stackexchange.com/questions/2128/... plus d'indices
Je pense qu'il était censé être un certain point du milieu dans une polyligne, plutôt que le centre de gravité d'un polygone. Ce n'est pas la même.
Et, de plus. Je suis d'essayer de maintenir extensions pour gmaps v3, votre code pour google.cartes.Polyligne.getMidPoint() serait utile. Si vous avez le code, bien sûr 🙂
OriginalL'auteur fxck | 2011-10-19
Vous devez vous connecter pour publier un commentaire.
Donc, c'est le(très orthodoxe) solution.
Utilisation http://www.geocodezip.com/scripts/v3_epoly.js de la bibliothèque, puis de compter le total de la longueur de vous polyligne(de diverses manières), la diviser en deux et appel epoly .GetPointsAtDistance() fonction.
Il doit retourner LatLng point, mais il agit un peu bizarre parfois, en revenant à deux points ou même de tourner ce point quelque peu "cassé". Donc, le plus sûr que vous pouvez faire est probablement de cette:
Bien, mieux que rien.
OriginalL'auteur fxck
De http://www.geocodezip.com/v3_polyline_example_geodesic_proj.html
Sans les extensions et en supposant que la polyligne est une ligne droite.
Il est possible de convertir les coordonnées lat/lng coordonnées de point de plan (x,y) postions et calculer la moyenne entre les deux. Cela vous donnera une centrale position du pixel. Vous pouvez ensuite convertir cette position à un latlng pour carte le tracé.
Plus d'informations sur la modification de la projection http://code.google.com/apis/maps/documentation/javascript/reference.html#Projection
Ensuite, essayez formulation de votre question, un peu mieux.
Le même lien que je viens de vous est dans le premier post 😉 il est également souligné dans la plupart des autres post que ce n'est pas une ligne droite, img62.imageshack.us/img62/2145/nonot.png
OriginalL'auteur Shane Best
Donc, tout d'abord, vous devez utiliser la géométrie de la bibliothèque qui calcule les distances. Ajouter les bibliothèques=géométrie de votre JS appel, par exemple,
En supposant que vous savez le point de départ et le point final de la polyligne, vous devriez être en mesure de le faire:
Je suppose que si vous ne connaissez pas les points de début et fin, vous pouvez travailler à partir d'une polyligne.getPath().
..et si j'ai réellement voulions pour ce faire, vous ne savez pas ce qui serait mieux, cela vous oblige à inclure une autre bibliothèque, le LatLngBounds() sur l'autre main vous oblige à demander un tableau de tous les latLngs et appeler un getCenter() la fonction sur elle, difficile de dire lequel est le plus efficace 🙂
Je ne comprends pas votre capture d'écran
Regarde ce g.co/maps/fvm62 cliquez sur "Běžecká stopa Mílovská" sur le côté gauche, regarde où l'infowindow apparaissent, je veux qu'il y apparaître en tant que bien, mais à l'aide de votre code, ou le LatLngBounds, il semble qu'il y img62.imageshack.us/img62/2145/nonot.png
essayez d'utiliser computeLength() et de lui passer le chemin d'accès complet de la polyligne
OriginalL'auteur duncan
pour obtenir les coordonnées de votre polyligne, vous devriez faire:
et à faire:
OriginalL'auteur Jefferson Maretti
Peut-être un peu vieux, mais pourquoi ne pas ajouter l'infobox sur le clic?
Si c'est un clic.
OriginalL'auteur Richard Housham