<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://mobac.sourceforge.net/wiki/index.php?action=history&amp;feed=atom&amp;title=BeanShellMapSources</id>
		<title>BeanShellMapSources - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://mobac.sourceforge.net/wiki/index.php?action=history&amp;feed=atom&amp;title=BeanShellMapSources"/>
		<link rel="alternate" type="text/html" href="http://mobac.sourceforge.net/wiki/index.php?title=BeanShellMapSources&amp;action=history"/>
		<updated>2026-04-06T05:46:08Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>http://mobac.sourceforge.net/wiki/index.php?title=BeanShellMapSources&amp;diff=124&amp;oldid=prev</id>
		<title>R x at 12:16, 12 March 2011</title>
		<link rel="alternate" type="text/html" href="http://mobac.sourceforge.net/wiki/index.php?title=BeanShellMapSources&amp;diff=124&amp;oldid=prev"/>
				<updated>2011-03-12T12:16:05Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Example BeanShell map sources =&lt;br /&gt;
== Mars ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 Tile script for mars maps (see http://www.uahirise.org/releases/hiwish.php for details)&lt;br /&gt;
 May not be very useful for most users but you can at least fetch a large texture from mars...&lt;br /&gt;
 reverse engineered with FireBug and TAC Map Evaluator 1.7 beta 8 by Henry T.&lt;br /&gt;
&lt;br /&gt;
 You can choose between 3 different layers (infrared, visible, elevation)&lt;br /&gt;
&lt;br /&gt;
 They use the google technology with some recursive quadtree naming convention for the tiles resulting in longer&lt;br /&gt;
 filenames the more you zoom in. Therefore I use a recursive function.&lt;br /&gt;
 &lt;br /&gt;
 top left: &amp;quot;q&amp;quot;&lt;br /&gt;
 top right: &amp;quot;r&amp;quot; &lt;br /&gt;
 bottom right: &amp;quot;s&amp;quot;&lt;br /&gt;
 bottom left: &amp;quot;t&amp;quot;&lt;br /&gt;
 Heres an example for a 2x2 map (zoom=1)&lt;br /&gt;
 [ q  r ]&lt;br /&gt;
 [ t  s ]&lt;br /&gt;
&lt;br /&gt;
 Heres an example for a 4x4 map (zoom=2)&lt;br /&gt;
 [ qq  qr  rq  rr ]  &lt;br /&gt;
 [ qt  qs  rt  rs ]&lt;br /&gt;
 [ tq  tr  sq  sr ]&lt;br /&gt;
 [ tt  ts  st  ss ]&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
 tileType = &amp;quot;jpg&amp;quot;;&lt;br /&gt;
 int w, z0;   // store the map width and zoom level &lt;br /&gt;
 String[] Table = { &amp;quot;q&amp;quot;, &amp;quot;r&amp;quot;, &amp;quot;t&amp;quot;, &amp;quot;s&amp;quot; };&lt;br /&gt;
&lt;br /&gt;
// recursive function for character concatenation&lt;br /&gt;
// maybe not too fast but a bit easier to understand&lt;br /&gt;
String BuildTileName(int z, int x, int y)&lt;br /&gt;
  {&lt;br /&gt;
  if(z==0) return &amp;quot;&amp;quot;;	&lt;br /&gt;
&lt;br /&gt;
  int w1 = w&amp;gt;&amp;gt;(z0-z);    &lt;br /&gt;
  int x1 = ((x%w1)&amp;lt;&amp;lt;1)/w1;&lt;br /&gt;
  int y1 = ((y%w1)&amp;lt;&amp;lt;1)/w1;&lt;br /&gt;
&lt;br /&gt;
  String s = Table[(y1&amp;lt;&amp;lt;1) + x1];&lt;br /&gt;
  return s + BuildTileName(z-1, x, y);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
String getTileUrl( int zoom, int x, int y ) &lt;br /&gt;
  {&lt;br /&gt;
  baseUrl = &amp;quot;http://mw1.google.com/mw-planetary/mars/&amp;quot;; &lt;br /&gt;
&lt;br /&gt;
/* you choose */&lt;br /&gt;
  MapType = &amp;quot;infrared&amp;quot;;&lt;br /&gt;
//  MapType = &amp;quot;visible&amp;quot;;&lt;br /&gt;
//  MapType = &amp;quot;elevation&amp;quot;;&lt;br /&gt;
  w = 1&amp;lt;&amp;lt;zoom;&lt;br /&gt;
  z0 = zoom;&lt;br /&gt;
 &lt;br /&gt;
  return baseUrl + MapType + &amp;quot;/t&amp;quot; + BuildTileName(zoom, x, y) + &amp;quot;.jpg&amp;quot;;    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Kompass.de Online-Karte ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/** &lt;br /&gt;
beanshell code to use the online maps form kompass-verlag&lt;br /&gt;
(http://www.kompass.de/online-karte.html) in &amp;quot;Mobile Atlas Creator&amp;quot;&lt;br /&gt;
(http://mobac.dnsalias.org/)&lt;br /&gt;
&lt;br /&gt;
put it into your &amp;quot;mapsources&amp;quot;-directory...&lt;br /&gt;
&lt;br /&gt;
    This program is free software: you can redistribute it and/or modify&lt;br /&gt;
    it under the terms of the GNU General Public License as published by&lt;br /&gt;
    the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;
    (at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
    This program is distributed in the hope that it will be useful,&lt;br /&gt;
    but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
    GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
    You should have received a copy of the GNU General Public License&lt;br /&gt;
    along with this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static import java.lang.Math.*;&lt;br /&gt;
&lt;br /&gt;
name = &amp;quot;Kompass Verlag&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
tileType = &amp;quot;png&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
tileSize = 256; // optional&lt;br /&gt;
minZoom = 6;   // optional&lt;br /&gt;
maxZoom = 17;   // optional&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
This method is called for each tile: &lt;br /&gt;
input parameters for this script: &amp;quot;zoom&amp;quot;, &amp;quot;x&amp;quot; and &amp;quot;y&amp;quot;&lt;br /&gt;
**/&lt;br /&gt;
String getTileUrl( int zoom, int x, int y ) {&lt;br /&gt;
return (&amp;quot;http://www.kompass.de/map/koogle.php?LAYERS=koogle&amp;amp;FORMAT=image%2Fpng&amp;amp;SERVICE=WMS&amp;amp;VERSION=1.1.1&amp;amp;REQUEST=GetMap&amp;amp;STYLES=&amp;amp;EXCEPTIONS=application%2Fvnd.ogc.se_inimage&amp;amp;SRS=EPSG:900913&amp;amp;BBOX=&amp;quot; +  mercatorTileEdges(x,y,zoom) +&lt;br /&gt;
&amp;quot;&amp;amp;WIDTH=256&amp;amp;HEIGHT=256&amp;quot;) ;&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
numTiles(z){&lt;br /&gt;
    return abs(pow(2,z));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mercatorToLat(mercatorY){&lt;br /&gt;
  return(toDegrees(atan(sinh(mercatorY))));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
latEdges1(y,z){&lt;br /&gt;
  n = numTiles(z);&lt;br /&gt;
  unit = 1 / n;&lt;br /&gt;
  relY1 = y * unit;&lt;br /&gt;
  lat1 = mercatorToLat(PI * (1 - 2 * relY1));&lt;br /&gt;
  return lat1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
latEdges2(y,z){&lt;br /&gt;
  n = numTiles(z);&lt;br /&gt;
  unit = 1 / n;&lt;br /&gt;
  relY1 = y * unit;&lt;br /&gt;
  relY2 = relY1 + unit;&lt;br /&gt;
  lat2 = mercatorToLat(PI * (1 - 2 * relY2));&lt;br /&gt;
  return lat2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
lonEdges1(x,z){&lt;br /&gt;
  n = numTiles(z);&lt;br /&gt;
  unit = 360 / n;&lt;br /&gt;
  lon1 = -180 + x * unit;&lt;br /&gt;
  return lon1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
lonEdges2(x,z){&lt;br /&gt;
  n = numTiles(z);&lt;br /&gt;
  unit = 360 / n;&lt;br /&gt;
  lon1 = -180 + x * unit;&lt;br /&gt;
  lon2 = lon1 + unit;&lt;br /&gt;
  return lon2;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
tileEdges(x,y,z){&lt;br /&gt;
  return (latEdges2(y,z) + &amp;quot;,&amp;quot; +&lt;br /&gt;
   	  lonEdges1(x,z) + &amp;quot;,&amp;quot; +&lt;br /&gt;
	  latEdges1(y,z) + &amp;quot;,&amp;quot; +&lt;br /&gt;
	  lonEdges2(x,z));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
lon2mercator(l){&lt;br /&gt;
  return (l * 20037508.34 / 180);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
lat2mercator(l){&lt;br /&gt;
 r = toRadians(l);&lt;br /&gt;
 lat = log((1+sin(r)) / (1-sin(r)));&lt;br /&gt;
 return (lat * 20037508.34 / 2 / PI);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
mercatorTileEdges(x,y,z){&lt;br /&gt;
  return (lon2mercator(lonEdges1(x,z)) + &amp;quot;,&amp;quot; +&lt;br /&gt;
          lat2mercator(latEdges2(y,z)) + &amp;quot;,&amp;quot; +&lt;br /&gt;
	  lon2mercator(lonEdges2(x,z)) + &amp;quot;,&amp;quot; +&lt;br /&gt;
	  lat2mercator(latEdges1(y,z)));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:Beispiel.jpg]]&lt;/div&gt;</summary>
		<author><name>R x</name></author>	</entry>

	</feed>