9
votes

Comment obtenir les coordonnées X Y Z de la tuile par clic sur la carte de la feuille de la feuille

Je veux demander de l'aide pour faire face à l'utilisation éventuelle de coordonnées non standard sur la notice de carte.

Je souhaite utiliser une notice pour afficher des cartes personnalisées avec mon propre générateur de tuiles. Les carreaux sont générés à la volée par script, en fonction de l'endroit où il est prévu d'afficher (paramètres {x}, {y}, {z} dans la demande d'URL au script) La carte sera zoomable (de 0 à 10), taille d'~ 16000 * 16000 carreaux dans un zoom maximal et 16 * 16 tuiles au minimum) et affichera une variété d'objets, chaque objet dans une tuile séparée. Chaque tuile de 64 * 64 pixels est l'objet sur la carte. Pour chaque objet (une tuile carrée), je souhaite afficher les informations sur la souris clic, en envoyant via une demande Ajax au serveur. Je ne voulais pas pré-charger toutes les informations sur tous les objets pour l'objectif d'optimisation. Mon problème principal - Je ne peux pas comprendre comment obtenir correctement les coordonnées X Y я de la tuile sur laquelle la souris a cliqué. Essentiellement parce que chaque carreau lorsqu'il est chargé à partir du serveur est lié à la grille {x}, {y}, {z}, et donc je veux obtenir ces {x}, {y}, {z}, {z} de clic sur le Carte et envoyez-les pour une nouvelle demande Ajax pour obtenir des informations sur l'objet. Maintenant, il est possible d'obtenir un point de clic sous forme de coordonnées ou de coordonnées en Letlng en pixels par rapport au coin supérieur gauche de la carte, que je ne peux pas faire référence à la grille de carreaux.

Et aussi, je voulais connaître la possibilité d'obtenir les coordonnées du clic relatif à la tuile. Par exemple, si la tuile a des dimensions de 64 * 64, et cliquez sur le centre de la tuile, alors comment puis-je obtenir une coordonnée relative du clic [32, 32]? Parce que si nous connaissons {x}, {Y}, {Z} coordonnées des coordonnées de la carreau et des coordonnées X * et Y * de clic à l'intérieur de la tuile, nous pouvons faire "la grille de coordonnées alternative universelle".

Peut-être que ce n'est pas un problème et il peut être résolu facilement, mais je n'ai jamais travaillé avec des API de cartes, et je veux donc connaître la réponse à cette question.

Merci d'avance pour votre aide!


0 commentaires

3 Réponses :


3
votes

Vous pouvez utiliser le Mouseeventtolayerpoint et MouseeventTocontainerPoint Mode dans le API de dépliant pour convertir des pixels à l'écran en pixels par rapport au haut à gauche de la carte, puis en utilisant un peu de mathématiques, vous pouvez dériver l'emplacement dans une tuile.


0 commentaires

13
votes

Voici un exemple de travail pour obtenir des coordonnées de zoom, x et y de la tuile cliquée (à l'aide de la carte openStreet): HTTP : //jsfiddle.net/84p9r/ xxx

basé sur une réponse https: // Stackoverflow.com/a/19197572


0 commentaires

1
votes

C'est ce que le dépliant fait en interne: xxx


3 commentaires

est-ce que le bon paramètre d'envoi à une non-scaleby - la source assume un objet avec des accessoires x et y: non scaleby: fonction (t) {renvoie nouveau o.point (this.x / t.x, this.y / t.y)},


Comment convertissez-vous les coordonnées x / y en lat, long


Get Point (Lat, Long) -> Carte-le à la tuile Il est à l'intérieur -> Obtenez des coordonnées de cette boîte / tuile (gauche, droite, en haut, en bas)