Ich versuche, einige Apple Mapping-Code in Java zu konvertieren. Ich habe das meiste davon korrekt konvertiert, bis auf ein paar Anrufe zu MKMetersPerMapPointAtLatitude
Math Hinter MKMetersPerMapPointAtLatitude
Ich habe eine sehr enge Lösung ... aber es ist nicht genau und ich bin mir nicht sicher, warum nicht. Irgendwelche Ideen?
#import <Foundation/Foundation.h>
#import <Math.h>
@import MapKit;
#define MERCATOR_OFFSET 268435456.0/2.0
#define MERCATOR_RADIUS (MERCATOR_OFFSET/M_PI)
#define WGS84_RADIUS 6378137.0
#define POINTS_PER_METER (MERCATOR_RADIUS/WGS84_RADIUS)
double MyMetersPerMapPointAtLatitude(double latitude) {
return 1.0/(POINTS_PER_METER/cos(latitude * M_PI/180.0));
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
double latitude = 33.861315;
for (int i = 0; i < 100; i++) {
double a = MKMetersPerMapPointAtLatitude(latitude);
double b = MyMetersPerMapPointAtLatitude(latitude);
NSLog(@"%f %f", a, b);
latitude += .1;
}
}
return 0;
}
Druckt die folgende
2015-05-19 09:13:00.334 Test[92619:5369062] 0.123522 0.123969
2015-05-19 09:13:00.335 Test[92619:5369062] 0.123379 0.123824
2015-05-19 09:13:00.335 Test[92619:5369062] 0.123236 0.123678
2015-05-19 09:13:00.335 Test[92619:5369062] 0.123092 0.123532
2015-05-19 09:13:00.335 Test[92619:5369062] 0.122948 0.123386
2015-05-19 09:13:00.335 Test[92619:5369062] 0.122804 0.123239
2015-05-19 09:13:00.335 Test[92619:5369062] 0.122659 0.123092
...etc
Was genau denkst du funktioniert nicht? – jny
Nun, es ist nicht ganz genau, aber ich bin mir nicht sicher warum. Es scheint, dass meine Funktion fast genau ist, wenn ich 0,3 zum Breitengrad hinzufüge ... – Shaun
Bei einer Vermutung, etwas damit zu tun, dass die Erde ein abgeflachtes Ellipsoid ist, keine perfekte Kugel? Es ist dicker um den Äquator. – Tommy