OK, I couldn't resist.

Here is ugly untested hack pseudo code, tell me if it works for you, I've probably messed up somewhere, just ask if it is unclear/faulty.

I think the algorithm could be done without recursion, but I couldn't think of a way right now, rusty programming/math skills.

`urlstring(mapname,r,c) {`

;

; mapname: fra_c_0185k_r061, ...

; r: row (1...n, positive integer, top to bottom)

; c: column (1...n, positive integer, left to right)

;

tile = rc2tile(r,c)

tileA = tile[0]

tileB = tile[1]

tilestring = tiles2string(tileA,tileB)

mapb64string = base64encode(mapname)

tileb64string = base64encode(tilestring)

return mapb64string + tileb64string

}

rc2tile(r,c) {

if (r=1 and c=1) {

A = 0

B = 0

}

else {

r2 = round(r/2)

c2 = round(c/2)

tile2 = rc2tile(r2,c2)

tile2A = tile2[0]

tile2B = tile2[1]

A = tile2B * 2 + ((c-1) mod 2))

B = tile2A * 2 + ((r-1) mod 2))

;

; note that the A/B switch above is intentional

;

}

return (A,B)

}

tiles2string(a,b) {

p=length(a)

q=length(b)

return repeat("0",10-p) + a + repeat("0",10-q) + b

}

;

; example use

;

geturl(http://m10.viamichelin.com/mapsgene/dm/mapdirect; + urlstring(fra_c_0185k_r061,14,58))

;

; if you don't have mod/%/modulo available, use this:

;

mod(a,n) {

return a - (n * int(a/n)).

}

;

; and "X mod Y" above has to be rewritten as "mod(X,Y)"

;

Also note, here is some much simpler explanations of the matrix definition - still recursive, but without the totally unnecessary dec<->bin conversions I've used above:

In the "cell quading" way of above:

original cell:

A:B

->

child cells:

2B:2A 2B+1:2A

2B:2A+1 2B+1:2A+1

In quarter-the-matrix approach:

(made an error in this, might add later)

Or, reversely/recursively defined...

Every matrix cell has data in the form of x:y, the cells are referred to with M[r,c] where r=row and c=column.

for r=c=1:

M[1,1] = 0:0

for all other cases with r and c positive integers:

M[r,c](x) = M[round(r/2),round(c/2)](y)*2+((c-1) mod 2)

M[r,c](y) = M[round(r/2),round(c/2)](x)*2+((r-1) mod 2)

(recurses until first case reached)

NOTHING OF THIS IS THOUROUGHLY TESTED!

**edit**Zoom levels with correpsonding "map names" would of course have to be set up by hand.

And then there is some work of aligning the tiles to the right geoposition, but the above pseudeocode should, barring mistakes, be enough to know how to call any specified tile in a map.

**edit again**Corrected an obvious mistake in tiles2string pseudo code.