bool geohashBoundingBox(double latitude, double longitude, double radius_meters, double *bounds) { if (!bounds) return false; double latr, lonr; latr = deg_rad(latitude); lonr = deg_rad(longitude); double distance = radius_meters / EARTH_RADIUS_IN_METERS; double min_latitude = latr - distance; double max_latitude = latr + distance; /* Note: we're being lazy and not accounting for coordinates near poles */ double min_longitude, max_longitude; double difference_longitude = asin(sin(distance) / cos(latr)); min_longitude = lonr - difference_longitude; max_longitude = lonr + difference_longitude; bounds[0] = rad_deg(min_latitude); bounds[1] = rad_deg(min_longitude); bounds[2] = rad_deg(max_latitude); bounds[3] = rad_deg(max_longitude); return true; }
QPointF EmptyMapAdapter::displayToCoordinate(const QPoint& point) const { qreal longitude = (point.x()*(360/(numberOfTiles*mytilesize)))-180; qreal latitude = rad_deg(atan(sinh((1-point.y()*(2/(numberOfTiles*mytilesize)))*PI))); return QPointF(longitude, latitude); }
double merc_lat (double y) { double ts = exp ( -y / R_MAJOR); double phi = M_PI_2 - 2 * atan(ts); double dphi = 1.0; int i; for (i = 0; fabs(dphi) > 0.000000001 && i < 15; i++) { double con = ECCENT * sin (phi); dphi = M_PI_2 - 2 * atan (ts * pow((1.0 - con) / (1.0 + con), COM)) - phi; phi += dphi; } return rad_deg (phi); }
double merc_lon(double x) { return rad_deg(x) / R_MAJOR; }