Sto lavorando su Google Maps e voglio implementare una funzionalità in cui un utente può disegnare una casella/rettangolo usando il mouse per selezionare una regione sulla mappa (come selezionare più file in Windows). Dopo la selezione, voglio ottenere tutti i marcatori che cadono nella regione. Ho guardato intorno all'API di Google Maps e alla ricerca ma non sono riuscito a trovare una soluzione. Ho provato ad usare jQuery Selezionabile per la selezione, ma tutto ciò che ritorna è un mucchio di div da cui non sono in grado di determinare se un qualsiasi marker è selezionato o meno.Selezione tracciato rettangolo/box in Google Maps
risposta
Ho trovato una libreria keydragzoom (http://google-maps-utility-library-v3.googlecode.com/svn/tags/keydragzoom/1.0/docs/reference.html) e l'ho usata per disegnare un rettangolo sulla pagina.
In seguito, ho modificato la libreria e l'ho interrotta dallo zoom sull'area selezionata e invece ho restituito le coordinate corrette nell'evento 'trascina'. Quindi ho eseguito manualmente il looping di tutti i marker sulla mappa per trovare i marker che si trovano all'interno di quella particolare regione. La libreria non mi dava le coordinate corrette per apportare le seguenti modifiche.
Modificato la funzione DragZoom a
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();
});
}
e DragZoom.prototype.onMouseUp_ funzione per
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);
}
};
Come funziona per i marcatori 10k? –
Come posso intercettare i "punti" nel mio codice? Ho provato a utilizzare google.maps.event.addListener (map, 'dragend', function() {...}) ma si intercetta quando trascino per spostare la mappa anziché trascinare il trascinamento per creare la casella. –
- 1. Google maps (V3) - Mappa di selezione contenitore (usando jQuery)
- 2. Google Maps API vs Google Maps Engine?
- 3. Google maps in risposta
- 4. Google Maps Risultati GEO
- 5. Android Google Maps in Fragment
- 6. BadParcelableException in google maps code
- 7. Imposta i limiti di Google Maps con angular-google-maps
- 8. API di Google Maps directionsService.route diverso da Google Maps Indicazioni
- 9. Google maps e pdf
- 10. Algoritmo di Google Maps
- 11. Google maps e knockoutjs
- 12. Immagine di Google Maps?
- 13. Problema modale Google Maps
- 14. Raggruppamento contrassegni Google Maps
- 15. Google Maps come sfondo
- 16. strato overlay google maps
- 17. DrawerLayout con Google Maps
- 18. Android Google Maps ClassNotFoundException
- 19. Google Maps: Limit Panoramica
- 20. Meteor.js e Google Maps
- 21. Google maps over https
- 22. Google Maps Geocode indefinito
- 23. Google Maps e DART
- 24. Google Maps v3 OverlayView.getProjection()
- 25. Sovrapposizione Google Maps personalizzata?
- 26. Google maps not show
- 27. Come aprire i collegamenti in Apple Maps o Google Maps?
- 28. Come faccio ad animare GMSPolyline in google maps ios
- 29. Mostra Google Maps in Visualizza in Swift?
- 30. google maps: utilizzare direttamente su google server?
che richiederebbe qualche strumento per google maps specificamente ... ho provato a cercare brevemente per "google selezione del rettangolo delle mappe "ma senza successo. Hai trovato qualcosa? – TMS
Ho trovato una libreria che ti permette di disegnare un rettangolo (tenendo premuto il tasto Maiusc). Quindi zooma in quella regione. L'ho modificato in modo che non aumenti lo zoom, ma piuttosto restituisca le coordinate geografiche della regione selezionata. Quindi faccio scorrere tutti gli indicatori sulla mappa e seleziono quelli che si trovano in quella regione. Il nome della libreria è "keydragzoom" –
È questo? http://google-maps-utility-library-v3.googlecode.com/svn/tags/keydragzoom/1.0/docs/reference.html – TMS