ich bin neu bei openlayers und ich möchte lernen, wie kann ich pan zoom bar wie http://maps.cloudmade.com/ zoombar hinzufügen. es zeigt einigen Tag als Gebäude, Land usw., wenn Sie auf dieser Pfanne ...openlayers pan zoom bar änderung
3
A
Antwort
5
Sie OpenLayers.Control.PanZoom außer Kraft setzen können, zum Beispiel:
idecan.PanZoom = OpenLayers.Class(OpenLayers.Control.PanZoom, {
bounds: null,
initialize: function(options) {
this.position = new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,
OpenLayers.Control.PanZoom.Y);
if (arguments[0].bounds)
this.bounds = arguments[0].bounds;
OpenLayers.Control.prototype.initialize.apply(this, arguments);
},
includeButtons: {
"zoomin": {
outImageSrc: "zoom-plus-mini.png",
overImageSrc: "zoom-plus-mini-over.png"
},
"zoomout": {
outImageSrc: "zoom-minus-mini.png",
overImageSrc: "zoom-minus-mini-over.png"
},
"zoomworld": {
outImageSrc: "zoom-world-mini.png",
overImageSrc: "zoom-world-mini-over.png"
}
},
makeMouseCallback: function(id, state) {
var selector = state + "ImageSrc";
var src = OpenLayers.Util.getImagesLocation() + this.includeButtons[id][selector];
return function(evt) {
var img = this.firstChild;
if (img.src != src) {
img.src = src;
}
};
},
_addButton: function(id, img, xy, sz) {
if (id in this.includeButtons) {
var src = this.includeButtons[id].outImageSrc;
var size = new OpenLayers.Size(18,18);
var btn = OpenLayers.Control.PanZoom.prototype._addButton.call(this, id, src, xy, size);
if (this.bounds) {
var bounds = this.bounds;
var getBounds = function() {
return bounds;
};
btn.getBounds = getBounds;
}
btn.className = this.displayClass + id.capitalize();
btn._btnId = id;
OpenLayers.Event.observe(btn, "mouseover", OpenLayers.Function.bindAsEventListener(this.makeMouseCallback(id, "over"), btn));
OpenLayers.Event.observe(btn, "mouseout", OpenLayers.Function.bindAsEventListener(this.makeMouseCallback(id, "out"), btn));
return btn;
}
},
buttonDown: function (evt) {
if (!OpenLayers.Event.isLeftClick(evt)) {
return;
}
switch (this.action) {
case "panup":
this.map.pan(0, -this.getSlideFactor("h"));
break;
case "pandown":
this.map.pan(0, this.getSlideFactor("h"));
break;
case "panleft":
this.map.pan(-this.getSlideFactor("w"), 0);
break;
case "panright":
this.map.pan(this.getSlideFactor("w"), 0);
break;
case "zoomin":
this.map.zoomIn();
break;
case "zoomout":
this.map.zoomOut();
break;
case "zoomworld":
if (map.center)
map.setCenter(idecan.center, idecan.zoom);
//this.map.zoomToExtent(this.getBounds());
else
this.map.zoomToMaxExtent();
break;
}
OpenLayers.Event.stop(evt);
},
CLASS_NAME: "idecan.PanZoom"
});
3
Ich bin derzeit auch eine maßgeschneiderte Implementierung derivate von OpenLayers PanZoom-Steuerung. Leider enthält das PanZoom-Steuerelement eine Menge Code, viele Zeilen sind nur einem hart codierten Steuer-Styling gewidmet, das in CSS viel einfacher gestaltet werden kann (zB warum muss jeder Steuerungsknopf 18x18 Pixel sein?)
Felix ' Antwort ist ein guter Ausgangspunkt, aber wenn Sie Ihre PanZoom Steuerung nicht unbedingt dringend benötigen, würde ich warten bis OpenLayers 2.11 oder eine neuere Version herauskommt. Die OpenLayers-Entwickler reformieren derzeit viele der hartcodierten Formatierungen in CSS, wodurch der Steuercode schlanker und verständlicher wird.
Verwandte Themen
- 1. Zoom mit Openlayers deaktivieren
- 2. CSS3, ZOOM + PAN (Google Maps-Stil)
- 3. d3.js: Ordinale Skalierung und Zoom/Pan
- 4. Vollbild-Zoom Pan UIScrollView in iPhone verwenden
- 5. Größe ändern Rechteck auf Pan & Zoom Achsen
- 6. Matplotlib Änderung bar Farbe
- 7. OpenLayers 3 - Zoom auf spezifisches Level nach Animation
- 8. Javascript OpenLayers vor Zoom-Ereignis Listener
- 9. Auf Zoom ändern, Funktionen immer in Openlayers
- 10. Set-Stil Zoom Level Openlayers 3
- 11. openlayers 3 Zoom auf kombiniertes Ausmaß
- 12. Pan & Zoom mit AS3 über ein aufgenommenes Bild mit Cam
- 13. Pan und Zoom in Pyplot sind sehr langsam
- 14. Wenden Sie Zoom Pan und Achse Neuskalierung in d3
- 15. d3 zoom und pan upgrade auf version 4
- 16. Flotgraph Serie Ein/Aus, schweben, Zoom/Pan und Tracking
- 17. Openlayer mit Google Maps Layer-Problem in IE: Pan, Zoom-Bars versteckt
- 18. Openlayers 3 - Mehrlinien Zoom-in/out Schicht blinkt
- 19. OpenLayers - KML Vector Layer zIndexing umgekehrt, aber Zoom ein-/auszoomen
- 20. So vermeiden Sie die Pan-Map bei der ersten Zoomansicht
- 21. Openlayers 3 changeChange view
- 22. google maps pan to
- 23. OpenLayers .ContainsPunkt nach Schwenk
- 24. Nicht animierte Änderung von UIWebView Zoom verwischt den Inhalt
- 25. Javascript zoom Standardbild nach Änderung Bild src Wert
- 26. highcharts jquery dynamische Änderung Diagrammtyp Spalte in bar
- 27. Wie kann ich mein jQuery .animate() - Element zoom/pan mit CSS-Transformation wiederherstellen?
- 28. Nachladen von jQuery Smooth Zoom Pan-Viewer nach Größenanpassung des Containers
- 29. D3.JS 'Zoom' undefined
- 30. Google Maps zoomOut-Pan-ZoomIn Animation