Hallo,
Ik heb diverse examples bekeken hoe ik CRS origin kan aanpassen bij een andere map.
Helaas ben ik niet goed uitgekomen met Leaflet. Wel heb ik gevoel dat ik Project4Leaflet moet gebruiken, want met stukje code center:[x,y] werkt niet.
Ik leg even uit met plaatjes:

Wat je ziet is uitkomst als je van map wisselt. De 0,0 punt blijft op dezelfde plek, en map begint ook linksonder. Dat zie je als je markers gebruikt. Het blijft aan de linkerkant staan.
Maar de map image#2 overzicht is niet hetzelfde als map image #1. Het is zelf groter maar gebied is wel opgeschoven (meer toegevoegd aan linkerkant en bovenkant dus)

De juiste positie tov gebieden in beide mappen is hier afgebeeld. De groene map image #1 staat ongeveer waar map image #2 ook toont qua gebied. Omdat map image#2 eigenlijk opschuift ten opzichte van map image #1 dient de 0,0 punt, de origin van CRS, ook opgeschoven worden.
Met pixels correctie kan ik doen met map.project en map.unproject uitwisseling.
Van een site heb ik code voorbeeld:
De eerste regel ziet er echter niet simpel uit, er moeten juiste waarden ingevuld worden. Ook merk ik op dat waarden bij elke zoom ingesteld moet worden. Misschien zijn het dezelfde resolutie waarden voor elke zoom level. Hoe kan ik uitrekenen? De CRS in map image#1 is ongewijzigd en dat mag dus overgenomen worden voor correctie van map image#2 gebruik.
Ik heb zelf zoomlevel 2 tot 7. De map verhoudingen zijn exact, er is alleen meer gebied toegevoegd in map image#2.
Zelf heb ik deze voor map #1
Wie kan me helpen wat de juiste code om boel weer goed te zetten met image#2? Ik weet ongeveer waar ik moet zijn, maar goed uitrekenen weet ik niet zo zeker, en ik ben dus bang dat ik veel tijd ga prutsen (heb al vroeger gedaan en dat wil ik niet weer meemaken).
Ook juiste EPSG is nodig want er zijn meerdere verdelingen mogelijk. Wat gebruikt standaard CRS zelf?
Er zijn voorbeelden maar niet eentje die goed uitlegt. Zeker niet als het om map wissel gaat.
Dus ik zit beetje vast op dit moment. Ik heb even goede hint nodig maar code example is ook nuttig zodat ik kan testen of er resultaat is. Dan kan ik verder verbeteren en optimaal afstemmen.
Ik heb diverse examples bekeken hoe ik CRS origin kan aanpassen bij een andere map.
Helaas ben ik niet goed uitgekomen met Leaflet. Wel heb ik gevoel dat ik Project4Leaflet moet gebruiken, want met stukje code center:[x,y] werkt niet.
Ik leg even uit met plaatjes:

Wat je ziet is uitkomst als je van map wisselt. De 0,0 punt blijft op dezelfde plek, en map begint ook linksonder. Dat zie je als je markers gebruikt. Het blijft aan de linkerkant staan.
Maar de map image#2 overzicht is niet hetzelfde als map image #1. Het is zelf groter maar gebied is wel opgeschoven (meer toegevoegd aan linkerkant en bovenkant dus)

De juiste positie tov gebieden in beide mappen is hier afgebeeld. De groene map image #1 staat ongeveer waar map image #2 ook toont qua gebied. Omdat map image#2 eigenlijk opschuift ten opzichte van map image #1 dient de 0,0 punt, de origin van CRS, ook opgeschoven worden.
Met pixels correctie kan ik doen met map.project en map.unproject uitwisseling.
Van een site heb ik code voorbeeld:
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
| var customCRS = new L.Proj.CRS.TMS('EPSG:900913', '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0' + '+x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', [6422198.546, -851225.043, 196550.197, 9691950.164], { origin: [-851225.043, 6422198.546], resolutions: [6386.233628906251, 3193.1168144531257, 1596.5584072265628, 798.2792036132814, 399.1396018066407, 199.56980090332036, 99.78490045166018, 49.89245022583009 ] } ); var ljs_map = new L.Map('ljs_map', { crs: customCRS }); var layer = new L.Proj.TileLayer.TMS('http://url.to.the/layer/{z}/{x}/{y}.png', customCRS, { maxZoom: 7, minZoom: 0, tileSize: 512 }); ljs_map.addLayer(layer); ljs_map.setView([51, 0], 7); |
De eerste regel ziet er echter niet simpel uit, er moeten juiste waarden ingevuld worden. Ook merk ik op dat waarden bij elke zoom ingesteld moet worden. Misschien zijn het dezelfde resolutie waarden voor elke zoom level. Hoe kan ik uitrekenen? De CRS in map image#1 is ongewijzigd en dat mag dus overgenomen worden voor correctie van map image#2 gebruik.
Ik heb zelf zoomlevel 2 tot 7. De map verhoudingen zijn exact, er is alleen meer gebied toegevoegd in map image#2.
Zelf heb ik deze voor map #1
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| var map = new L.map('right'); var bdoUrl = 'images/map/{z}/{x}/{y}.png'; var bdo = new L.TileLayer( bdoUrl, { tms: true, // crs: L.CRS.Simple, continuousWorld: false, maxZoom: 7, minZoom: 3 } ); map.addLayer(bdo); map.setView(new L.LatLng(-39.3683,-67.5), 3); |
Wie kan me helpen wat de juiste code om boel weer goed te zetten met image#2? Ik weet ongeveer waar ik moet zijn, maar goed uitrekenen weet ik niet zo zeker, en ik ben dus bang dat ik veel tijd ga prutsen (heb al vroeger gedaan en dat wil ik niet weer meemaken).
Ook juiste EPSG is nodig want er zijn meerdere verdelingen mogelijk. Wat gebruikt standaard CRS zelf?
Er zijn voorbeelden maar niet eentje die goed uitlegt. Zeker niet als het om map wissel gaat.
Dus ik zit beetje vast op dit moment. Ik heb even goede hint nodig maar code example is ook nuttig zodat ik kan testen of er resultaat is. Dan kan ik verder verbeteren en optimaal afstemmen.