author | Tero Marttila <terom@paivola.fi> |
Mon, 15 Sep 2014 00:10:43 +0300 | |
changeset 142 | 9b316e83e9e3 |
child 143 | 22efa9fe73c8 |
permissions | -rw-r--r-- |
142
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
var map_config; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
var map; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
4 |
function map_init (_config) { |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
5 |
map_config = _config; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
6 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
var bounds = L.latLngBounds( |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
8 |
L.latLng(-map_config.image_height, 0), |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
9 |
L.latLng(0, +map_config.image_width) |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
10 |
); |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
map = L.map('map', { |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
crs: L .CRS.Simple, |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
minZoom: 0, |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
15 |
maxZoom: map_config.tile_zoom, |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
16 |
maxBounds: bounds |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
17 |
}); |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
19 |
map.on('move', map_move); |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
20 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
21 |
L.tileLayer(map_config.tile_url, { |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
22 |
name: map_config.tile_name, |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
23 |
minZoom: 0, |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
24 |
maxZoom: map_config.tile_zoom, |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
25 |
tileSize: map_config.tile_size, |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
26 |
continuousWorld: true, |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
noWrap: true, |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
28 |
zoomReverse: true, |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
29 |
bounds: bounds |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
}).addTo(map); |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
32 |
// set position |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
33 |
var x = bounds.getCenter().lng; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
34 |
var y = -bounds.getCenter().lat; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
var z = 0; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
if (document.location.hash) { |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
// parse x:y:z tuple |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
39 |
var pt = document.location.hash.substr(1).split(":"); |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
// unpack |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
if (pt.length) x = parseInt(pt.shift()) || x; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
43 |
if (pt.length) y = parseInt(pt.shift()) || y; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
if (pt.length) z = parseInt(pt.shift()) || z; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
} |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
47 |
map_center(x, y, z); |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
} |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
50 |
function map_move () { |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
51 |
var map_center = map.getCenter(); |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
var map_zoom = map.getZoom(); |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
var x = (+map_center.lng) << map_config.tile_zoom; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
55 |
var y = (-map_center.lat) << map_config.tile_zoom; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
var z = map_config.tile_zoom - map_zoom; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
57 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
58 |
document.location.hash = x + ":" + y + ":" + z; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
} |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
/* |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
62 |
* Position map based on pngtile coordinates |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
*/ |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
64 |
function map_center (x, y, z) { |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
// translate to lat/lng |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
66 |
// leaflet seems to base its latlng coordinates on the max zoom level |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
67 |
var map_center = [ |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
68 |
-(y >> map_config.tile_zoom), |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
+(x >> map_config.tile_zoom), |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
70 |
]; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
// reversed zoom |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
73 |
var map_zoom = map_config.tile_zoom - z; |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
74 |
|
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
map.setView(map_center, map_zoom); |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
} |
9b316e83e9e3
pngtile.image: split out javascript and rename js/css to map
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |