11
votes

Comment cliquez-vous sur une carte et avez-vous des champs de latitude et de longitude sous une forme peuplée?

J'ai une forme qu'un utilisateur doit remplir où l'emplacement doit être identifié. J'ai des champs d'entrée de latitude et de longitude sur le formulaire. Je cherche aussi la Decimal Lat and Long. Ce que j'aimerais semble vraiment simple. Je veux juste avoir un lien que l'utilisateur peut cliquer sur ce que l'utilisateur contemplerait une carte (Google ou Yahoo) et il pourrait utiliser la carte pour trouver l'emplacement et cliquer simplement sur celui-ci et qui remplirait automatiquement les deux champs de saisie pour la Lat et Longue de la carte. Quelqu'un a-t-il fait cela auparavant?


2 commentaires

Je ne comprends pas bien la question. Pouvez-vous le reformuler ou le clarifier?


Je ne sais pas comment l'expliquer mieux. Je veux juste que chacun des champs de la latitude et de la longitude soit rempli avec les valeurs lorsqu'ils cliquent sur la carte. Je connais à Google Earth, car vous mettez le pointeur de la souris sur la carte, dans la barre d'état, vous pouvez voir les valeurs lates décimales et longues. Je voudrais un moyen de transférer ces deux valeurs de la carte dans les champs de formulaire simplement en cliquant sur un point sur la carte. Je ne sais pas vraiment comment l'expliquer autrement.


4 Réponses :


0
votes

Vous aurez besoin de connaître le lat / long d'au moins deux points sur la carte, de préférence pas très proches, et connaissez également leurs coordonnées de pixels par rapport à un coin (c'est-à-dire que les deux meilleurs points seraient des coins opposés). Ensuite, il est simple de convertir la coordonnée de pixels du clic en lat / Long par interpolation. Notez cependant que cela ne fonctionne que tant que la zone couverte par la carte est "plate" par rapport à la courbure de la Terre. Si la carte couvrait une grande surface, disons 6000 miles de large, il y aurait une distorsion significative. Si vous aviez besoin de cela pour être précis, vous devez faire une projection de carte pour calculer la position.


0 commentaires

0
votes

Consultez l'API Google Maps ainsi que ce lien: http: // www .gorissen.info / Pierre / Maps / Googlemaplacement.php

Je pense que l'API Google Maps peut probablement faire ce que vous recherchez.


1 commentaires

Merci pour le lien, je vais vérifier.



12
votes

Utilisation de l'API Google Maps, vous pouvez le faire assez facilement. Il suffit d'ajouter un gestionnaire d'événements de clic à votre objet de carte, qui passe dans les coordonnées de latitude / longitude de l'endroit où l'utilisateur a cliqué sur (voir les détails sur l'événement CODE> Cliquez sur ICI ).

function initMap()
{
    // do map object creation and initialization here
    // ...

    // add a click event handler to the map object
    GEvent.addListener(map, "click", function(overlay, latLng)
    {
        // display the lat/lng in your form's lat/lng fields
        document.getElementById("latFld").value = latLng.lat();
        document.getElementById("lngFld").value = latLng.lng();
    });
}


0 commentaires

7
votes

Le code est pour Google Map API version 3. V2 a été amorti de tellement mieux de s'en tenir à V3.

avoir une DIV avec ID MAPDIV dans laquelle la carte est chargée

Utilisez un élément d'entrée Avec ID LATLNG pour afficher le lat et le GNL lorsque vous cliquez sur la carte. afin que les gens puissent copier cette valeur dans une autre application. Vous pouvez modifier la variable OPTS en fonction de votre besoin.

Ajouter un gestionnaire d'événements pour un événement de clic comme dans le code. Pour que lorsque vous cliquez sur la carte sur la carte, l'élément d'entrée est rempli avec des valeurs de lat et de LNG. xxx

Ce qui précède est tout ce dont vous avez besoin. << HR> < P> Si vous souhaitez voir les valeurs de Lat et LNG lorsque vous déplacez la souris sur la carte, ajoutez un auditeur d'événement de déplacement de la souris comme dans le code suivant. Vous pouvez utiliser une étendue ou même un élément d'entrée pour voir les valeurs. J'avais utilisé la plage dans mon code. xxx


0 commentaires