README
2.27 KB
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
This is a slippy map for the iPhone written by Joseph Gentle.
It has been made as part of the CatchMe project.
We released it for you under the BSD license.
---------
For Users
---------
Once this application has more functionality than google maps, I'll throw it on the itunes store for free.
--------------
For developers
--------------
- Don't be frightened by so many source code files! Most of them (144 of the ~160 source code files) are from the Proj4 library. Proj4 is available here:
http://trac.osgeo.org/proj/
The only thing proj4 is used for here is converting Longitude / lattitude coordinates into Mercator coordinates (and back again).
Coordinate Systems
------------------
- This project uses 4 different coordinate systems! The code won't make any sense unless you understand them:
Longitude / Lattitude
- Points around the spherical earth measured in Degrees.
- Using the types provided by CoreLocation - CLLocationCoordinate2D { double lat, long; }
Mercator coordinates
- These are points on a flat square. The units are metres; though they're only accurate near the equator.
- Using types in Mercator.h - MercatorPoint { double x, y; } and MercatorRect.
http://en.wikipedia.org/wiki/Mercator_projection
Tile coordinates
- Each zoom level (z) has a grid of 2^z x 2^z tiles. Using OpenStreetMaps each of these tiles is 256 pixels per side.
- Each tile is indexed by the Tile struct - { int x, y, zoom; }. There are also TilePoint and TileRect structs for discussing regions of tiles complete with offsets into the tiles.
Screen Coordinates
- These are measured in pixels within the bounds of the MapView.
- Using builtin CGPoint, CGSize and CGRect
You can convert:
lat/long <-> Mercator using: [Mercator toLatLong: (MercatorPoint) coordinate] and [Mercator toMercator: (CLLocationCoordinate2D) coordinate]
Mercator <-> Tile using FractalTileProjection
Tile <-> Screen coordinates using ScreenProjection
Always be aware of what coordinate system you're working in / with and the code is all pretty easy.
Desired Features
----------------
Search
Bookmarked locations
Overlays (Of course, these can just be done with cocoa at the moment)
Remember last location
Disk cache
A Geo tracing facility would be nice... though I'm not too sure how the user can get the geotraces back off the device.