Un agent immobilier local souhaite ajouter des cartes Google à son site Web qui affiche ses annonces. Cependant, plutôt que d'afficher simplement des marqueurs de carte à toutes ses propriétés, il souhaite que le visiteur du site Web puisse dessiner un polygone arbitraire sur la carte, cliquer sur un bouton, puis afficher toutes ses maisons dans ces limites. D'après ce que je comprends, cela va prendre du Voodoo SIG. Mais avant de commencer à examiner la complexité de PostGIS, je me demande s'il existe une meilleure façon de procéder? Le site fonctionne sur une pile LAMP standard, mais j'espère le convaincre de passer à Python/Nginx/PostgreSQL.Google Maps: Obtenir des points contenus dans un polygone dessiné par l'utilisateur?
Répondre
Je ne pense pas qu'il est nécessaire de passer à PostGIS.
- Les premières chances sont que votre client obtienne la liste à travers une base de données MLS via une adresse (123 rue Fooview). Mise à jour la liste dans un fichier kml
- En utilisant Google maps tutorial ou this map tool dessiner un polygone
- utilisant this website (js fournies dans les cartes) vous pouvez faire le point dans le polygone (le match si l'une de vos adresses sont dans les limites du polygone). Je pense qu'ils le font dans plus d'une application.
EDIT
une autre façon de faire point-in-polygon dans google maps
Je ne pense pas que cela nécessitera autant de Voodoo SIG que vous le pensez. J'approcherais ceci en trois étapes:
Générer une coordonnée de latitude et de longitude pour chaque liste. Vous avez peut-être déjà cette information dans votre base de données. Si ce n'est pas le cas, plusieurs outils gratuits sont disponibles pour ce faire. Nous avons programmé une application Google Maps au travail qui relie directement à notre infrastructure backend SQL que je peux vous aider à configurer dans votre application si nécessaire.
Utilisez GLatLng pour retourner les coordonnées pour les points arbitraires du répondant est intéressé http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GLatLng
Utilisez un peu de mathématiques pour créer une zone des points (sera plus facile si vous permettez seulement 4 points pour la forme arbitraire) puis utilisez une boucle for pour comparer la paire lat/long de chaque liste à la zone.
Si votre région est trop grand pour comparer toutes les annonces à la zone arbitraire, faire un peu de pré-filtrage basé sur l'état/comté/ville/toutes les données dont vous disposez.
Hope this helps, -Chase
Merci. Le terme «point dans le polygone» est ce que j'avais besoin de rechercher pour accomplir ceci. – jamieb