Hallo,
Ik heb wat gezocht maar kan door de bos de bomen niet goed zien.
Ik weet dat ik een offset moet hebben om map in de goede positie te zetten.
Er is alleen niet zoveel examples zodat ik weet welke ik moet nemen.
Ik heb een grote map in tiles in de website gedaan. Daar heb ik heleboel markers erop gezet.
Maar later vind ik een betere grote map en wil dat even toepassen. Helaas heeft andere map een andere afmeting en ook zoom level.
Maar dat zou geen probleem moeten zijn. Ik hoef alleen maar nieuwe 0,0 punt (dus een nieuwe center zoeken voor de nieuwe map) even goedzetten.
Hierna zouden de markers vanzelf op de juiste plek staan nadat map opgeschoven is.
Ik kan ook elke marker omzetten naar nieuwe coords, maar dat is meer werk
Het is veel makkelijker om gewoon map even op te schuiven. Ik heb helaas nog niet kunnen ontdekken welke code het moet zijn. Het gaat om L.TileLayer die opgeschoven moet worden.
Het moet geen setView zijn, want dat schuift alles op, met markers. Alleen map zelf moet opgeschoven worden.
Wie heeft een tip voor me welke code het moet zijn? Alvast dank.
Daar moet het in zitten, direct bij de init.
Volgens leaflet is hier code "center", maar kan dat in addLayer?
Zag verder een code elders:
Is deze bruikbare oplossing, indien ja, waar pas ik die toe?
Alvast dank.
Ik heb wat gezocht maar kan door de bos de bomen niet goed zien.
Ik weet dat ik een offset moet hebben om map in de goede positie te zetten.
Er is alleen niet zoveel examples zodat ik weet welke ik moet nemen.
Ik heb een grote map in tiles in de website gedaan. Daar heb ik heleboel markers erop gezet.
Maar later vind ik een betere grote map en wil dat even toepassen. Helaas heeft andere map een andere afmeting en ook zoom level.
Maar dat zou geen probleem moeten zijn. Ik hoef alleen maar nieuwe 0,0 punt (dus een nieuwe center zoeken voor de nieuwe map) even goedzetten.
Hierna zouden de markers vanzelf op de juiste plek staan nadat map opgeschoven is.
Ik kan ook elke marker omzetten naar nieuwe coords, maar dat is meer werk
code:
1
2
3
4
| var latLng = L.latLng([0,0]), var point = map.latLngToContainerPoint(latLng); var newPoint = L.point([point.x - 10, point.y - 57]); var newLatLng = map.containerPointToLatLng(newPoint); |
Het is veel makkelijker om gewoon map even op te schuiven. Ik heb helaas nog niet kunnen ontdekken welke code het moet zijn. Het gaat om L.TileLayer die opgeschoven moet worden.
code:
1
2
3
4
5
6
7
8
9
10
11
| var bdoUrl = 'images/map/{z}/{x}-{y}.jpg'; var bdo = new L.TileLayer( bdoUrl, { attribution: bdoAttrib, tms: false, continuousWorld: true, maxZoom: 7, minZoom: 3 } ); map.addLayer(bdo); |
Het moet geen setView zijn, want dat schuift alles op, met markers. Alleen map zelf moet opgeschoven worden.
Wie heeft een tip voor me welke code het moet zijn? Alvast dank.
Daar moet het in zitten, direct bij de init.
Volgens leaflet is hier code "center", maar kan dat in addLayer?
Zag verder een code elders:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| MapCenterOffsetMixin = { UIOffset: [550, 0], // x, y getBounds: function(){ var a=this.getPixelBounds(), b=this.unproject(new L.Point(a.min.x+this.UIOffset[0],a.max.y+this.UIOffset[1]), this._zoom,!0), c=this.unproject(new L.Point(a.max.x,a.min.y),this._zoom,!0); return new L.LatLngBounds(b,c) }, _latLngToNewLayerPoint: function (latlng, newZoom, newCenter) { var targetPoint = this.project(newCenter, newCenter).subtract([this.UIOffset[0]/2, this.UIOffset[1]/2]), newCenter = this.unproject(targetPoint, newZoom); var topLeft = this._getNewTopLeftPoint(newCenter, newZoom).add(this._getMapPanePos()); return this.project(latlng, newZoom)._subtract(topLeft); }, _getCenterLayerPoint: function () { return this.containerPointToLayerPoint(this.getSize().divideBy(2).add([this.UIOffset[0]/2, this.UIOffset[1]/2])); }, _resetView: function (a, b, c, d) { var e = this._zoom !== b; // Change the center var targetPoint = this.project(a, b).subtract([this.UIOffset[0] / 2, this.UIOffset[1]/2]), a = this.unproject(targetPoint, b); d || (this.fire("movestart"), e && this.fire("zoomstart")), this._zoom = b, this._initialTopLeftPoint = this._getNewTopLeftPoint(a); if (!c) L.DomUtil.setPosition(this._mapPane, new L.Point(0, 0)); else { var f = L.DomUtil.getPosition(this._mapPane); this._initialTopLeftPoint._add(f) } this._tileLayersToLoad = this._tileLayersNum, this.fire("viewreset", { hard: !c }), this.fire("move"), (e || d) && this.fire("zoomend"), this.fire("moveend"), this._loaded || (this._loaded = !0, this.fire("load")) } } L.Map.include(MapCenterOffsetMixin); |
Is deze bruikbare oplossing, indien ja, waar pas ik die toe?
Alvast dank.