void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
// https://tile.openstreetmap.org/18/232798/103246.png
int zoom = 18;
double long_ = tilex2long(232798,zoom);
Serial.println(long_,5);
double lat_ = tiley2lat(103246,zoom);
Serial.println(lat_,5);
int yy = lat2tiley(lat_,zoom);
int xx = long2tilex(long_,zoom);
Serial.println(xx);
Serial.println(yy);
}
void loop() {
}
int long2tilex(double lon, int z){
return (int)(floor((lon + 180.0) / 360.0 * (1 << z)));
}
int lat2tiley(double lat, int z) {
double latrad = lat * M_PI / 180.0;
return (int)(floor((1.0 - asinh(tan(latrad)) / M_PI) / 2.0 * (1 << z)));
}
double tilex2long(int x, int z) {
return x / (double)(1 << z) * 360.0 - 180;
}
double tiley2lat(int y, int z) {
double n = M_PI - 2.0 * M_PI * y / (double)(1 << z);
return 180.0 / M_PI * atan(0.5 * (exp(n) - exp(-n)));
}