Je travaille sur Google Maps et je veux implémenter une fonctionnalité où un utilisateur peut dessiner une boîte/rectangle en utilisant sa souris pour sélectionner une région sur la carte (comme sélectionner plusieurs fichiers dans Windows). Lors de la sélection, je veux obtenir tous les marqueurs qui tombent dans la région. J'ai regardé autour de Google Maps API et de la recherche, mais je suis incapable de trouver une solution. J'ai essayé d'utiliser jQuery Selectable pour la sélection, mais tout ce qu'il retourne est un tas de divs à partir de laquelle je suis incapable de déterminer si un marqueur est sélectionné ou non.Sélection de boîte/rectangle dans Google Maps
Répondre
J'ai trouvé une bibliothèque keydragzoom (http://google-maps-utility-library-v3.googlecode.com/svn/tags/keydragzoom/1.0/docs/reference.html) et l'ai utilisée pour dessiner un rectangle sur la page. Par la suite, j'ai édité la bibliothèque et l'ai empêchée de zoomer sur la zone sélectionnée et je l'ai rendue à la place avec les bonnes coordonnées dans l'événement 'dragend'. Ensuite, j'ai manuellement fait une boucle à travers tout le marqueur sur la carte pour trouver les marqueurs qui sont dans cette région particulière. La bibliothèque ne me donnait pas les coordonnées appropriées pour faire les changements suivants.
Changé la fonction DragZoom à
var prj = null;
function DragZoom(map, opt_zoomOpts) {
var ov = new google.maps.OverlayView();
var me = this;
ov.onAdd = function() {
me.init_(map, opt_zoomOpts);
};
ov.draw = function() {
};
ov.onRemove = function() {
};
ov.setMap(map);
this.prjov_ = ov;
google.maps.event.addListener(map, 'idle', function() {
prj = ov.getProjection();
});
}
et la fonction DragZoom.prototype.onMouseUp_ à
DragZoom.prototype.onMouseUp_ = function (e) {
this.mouseDown_ = false;
if (this.dragging_) {
var left = Math.min(this.startPt_.x, this.endPt_.x);
var top = Math.min(this.startPt_.y, this.endPt_.y);
var width = Math.abs(this.startPt_.x - this.endPt_.x);
var height = Math.abs(this.startPt_.y - this.endPt_.y);
var points={
top: top,
left: left,
bottom: top + height,
right: left + width
};
var prj = this.prjov_.getProjection();
// 2009-05-29: since V3 does not have fromContainerPixel,
//needs find offset here
var containerPos = getElementPosition(this.map_.getDiv());
var mapPanePos = getElementPosition(this.prjov_.getPanes().mapPane);
left = left + (containerPos.left - mapPanePos.left);
top = top + (containerPos.top - mapPanePos.top);
var sw = prj.fromDivPixelToLatLng(new google.maps.Point(left, top + height));
var ne = prj.fromDivPixelToLatLng(new google.maps.Point(left + width, top));
var bnds = new google.maps.LatLngBounds(sw, ne);
//this.map_.fitBounds(bnds);
this.dragging_ = false;
this.boxDiv_.style.display = 'none';
/**
* This event is fired when the drag operation ends.
* Note that the event is not fired if the hot key is released before the drag operation ends.
* @name DragZoom#dragend
* @param {GLatLngBounds} newBounds
* @event
*/
google.maps.event.trigger(this, 'dragend', points);
}
};
Comment ça fonctionne pour les marqueurs 10k? –
Comment intercepter les 'points' dans mon code? J'ai essayé d'utiliser google.maps.event.addListener (map, 'dragend', function() {...}) mais il intercepte quand je fais glisser pour déplacer la carte plutôt que de faire glisser-déplacer pour faire la boîte. –
- 1. Google Maps Marker Sélection
- 2. Google Maps (flash) - Sélection de pays
- 3. Sélection de liens dans Google Maps InfoWindows w/jQuery
- 4. API Google Maps 3. Sélection du texte dans les superpositions
- 5. Animation dans Google Maps
- 6. Marqueur dans Google Maps
- 7. Terre dans Google Maps
- 8. Clustering dans Google Maps
- 9. Google maps dans Android
- 10. google maps dans aspx
- 11. Google Maps dans android
- 12. didUpdateUserLocation dans Google Maps?
- 13. Marqueurs dans google maps
- 14. Google Maps dans Android
- 15. Google Maps dans Silverlight
- 16. Jquery autosuggest google maps - Charger sur la sélection
- 17. Sélection de Google Map Marker
- 18. changement API icône marqueur google maps v3 avec une sélection
- 19. Google Maps Engine - Importation de données Google Maps "Mes cartes"
- 20. Différences de coordonnées entre Google maps et Google Static Maps
- 21. Aucun résultat dans Google Maps API Google
- 22. comment ajouter google Directions dans google maps
- 23. Seuil de Google Maps?
- 24. Google Maps API dans Android
- 25. Image dans Google Maps (Android)
- 26. Ajouter Google Maps dans JSP
- 27. embed google maps dans IE
- 28. application Google Maps dans l'iphone
- 29. Carré vide dans Google Maps
- 30. Google Maps Google - superposition de tuiles personnalisées
qui nécessiterait un certain outil pour google maps spécifiquement ... J'ai essayé de rechercher brièvement « Google maps rectangle selection "mais sans succès. Avez-vous trouvé quelque chose? – TMS
J'ai trouvé une bibliothèque qui vous permet de dessiner un rectangle (tout en maintenant la touche Maj enfoncée). Il zoome ensuite sur cette région. Je l'ai modifié pour qu'il ne fasse pas un zoom avant mais retourne plutôt les coordonnées géographiques de la région sélectionnée. Je fais ensuite une boucle sur tous les marqueurs de la carte et sélectionne ceux qui se trouvent dans cette région. Le nom de la bibliothèque est "keydragzoom" –
Est-ce celui-ci? http://google-maps-utility-library-v3.googlecode.com/svn/tags/keydragzoom/1.0/docs/reference.html – TMS