Glisser-déplacer (move) un polygone à l'aide de Google Maps v3
La L'API Google Maps pour un Polygone n'offre pas une méthode de glissement.
Ce serait une manière efficace de mettre en œuvre une telle fonctionnalité (c'est à dire, suffisamment optimisé de manière à ce qu'il ne serait pas tuer un enfant de quatre ans un ordinateur portable)?
Merci!
OriginalL'auteur Dave Jarvis | 2010-06-24
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé les Cartes Google maps V2 Polygone de mise en Œuvre pour être très limitant pour les besoins que j'ai eu et résolu par la création d'un overlays. Mon groupe est actuellement bloqué sur IE6 donc je n'ai pas encore migrer vers Google Maps V3 - mais en prenant un coup d'oeil rapide à l'API montre que vous pourriez probablement faire quelque chose de similaire que j'ai fait dans la V2 à la V3.
Essentiellement l'idée est la suivante:
Personnalisé Superpositions:
Voici quelques informations pour vous aider à démarrer sur faire votre propre coutume de superposition:
http://code.google.com/apis/maps/documentation/javascript/overlays.html#CustomOverlays
De la création de votre propre "Déplaçables" Objet Polygone:
Une fois que vous obtenez ce vers le bas, vous aurez envie d'ajouter vos propres polygones pour les overlays au lieu d'utiliser GPolygons. Je suis passé par le processus douloureux de l'apprentissage SVG/VML et la rédaction d'une bibliothèque de pont SVG/VML ensemble, vous pourriez le faire, mais je recommande de commencer par essayer d'utiliser une autre bibliothèque comme Raphaël.
http://raphaeljs.com/
À l'aide de Raphaël permettra d'économiser que vous beaucoup de temps à essayer de comprendre comment obtenir de la croix-navigateur Graphique Vectoriel (Polygone) la fonctionnalité et le meilleur de tous, il prend en charge le glisser événements déjà, voici un exemple à partir de leur bibliothèque:
http://raphaeljs.com/graffle.html
Une fois que vous avez personnalisé de superposition et vous êtes en mesure de jeter un peu de Raphaël objets sur la dernière étape consiste à traduire les coordonnées que vous voulez à partir d'un Lat/Lng de la valeur à une valeur de Pixel. Il est disponible dans le MapCanvasProjection de la V3:
http://code.google.com/apis/maps/documentation/javascript/reference.html#MapCanvasProjection
Vous pouvez utiliser fromLatLngToDivPixel de comprendre que les valeurs de pixel pour les points sur votre Raphaël polygone, de la dessiner, puis l'ajouter à la superposition avec un événement glisser.
OriginalL'auteur John
Depuis la version 3.11 (daté Jan 22, 2013), il est possible de définir la
draggable
bien sur lagoogle.maps.Polygon
exemple; voir cet exemple.Si vous voulez déplacer par programmation un polygone, vous aurez besoin un custom Google Maps Extension que j'ai écrit, que l'API ne permet pas de fournir une telle méthode.
OriginalL'auteur Bramus
Voici comment je le fais. Trouver le centre approximatif du polygone, et ajouter un marqueur, puis ajouter un glisser-auditeur à la marque. Sur lat/lng modifier, soustraire la différence de l'original marqueur lat/lng, soustraire la différence de chacun des chemins, ensuite, définir la position d'origine à la nouvelle position. Assurez-vous que l'option javascript de votre appel d'api que vous avez bibliothèque=géométrie,dessin
Si vous avez des questions, n'hésitez pas à me contacter.
OriginalL'auteur Eric Leroy
Vous pourriez avoir des marqueurs pour chaque point du polygone, ces marqueurs pourraient avoir de glisser à la fin de chaque glisser, le polygone peut être redessiné.
Vous pouvez également avoir un marqueur dans le centre du polygone représentant le polygone, lorsque vous déplacez le marqueur, chaque marqueur pourrait être déplacé par la même quantité pour maintenir la forme.
OriginalL'auteur paullb
Ok - donc après avoir vu le site que vous essayez de mettre en œuvre, j'ai commencé à sentir comme Raphael peut ne pas être nécessaire, car il est assez lourd Bibliothèque JS - et si vous essayez seulement de dessiner un rectangle, polygone, j'ai pensé, pourquoi ne pas simplement le faire avec un seul léger DIV à la place?
Cependant, je pense que le Raphaël solution serait encore contenir de l'eau pour de nombreux autres cas - donc je pense que je vais juste poster une autre réponse possible.
Voici un exemple de travail j'ai jeté:
http://www.johnmick.net/drag-div-v3/
N'hésitez pas à jeter un coup d'oeil à la source:
http://www.johnmick.net/drag-div-v3/js/main.js
Pour l'essentiel, nous ne les suivants
Actuellement, je ne suis que de stocker une LatLng valeur pour le Rectangle (le coin en haut à gauche) - vous pouvez facilement étendre cet exemple de stocker toutes les 4 points du rectangle et ont la forme de redimensionner dynamiquement sur les zooms. Vous pouvez le faire, sinon en tant qu'utilisateurs de zoom, elles pourront obtenir un climat de plus en plus grande de la région.
À compter d'aujourd'hui 12/4/2015, j'ai essayé les deux sur IE et Chrome, le polygone n'est pas déplaçable.
OriginalL'auteur John