From: Matt Blair Date: Sat, 19 Nov 2016 03:40:11 +0000 (-0500) Subject: Fix longitude wrapping to range (-180, 180) X-Git-Tag: submit/tizen/20161125.033156~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d6c48d40e2bb2bebb93eeca42ab91143d2424880;p=platform%2Fcore%2Flocation%2Fmaps-plugin-mapzen.git Fix longitude wrapping to range (-180, 180) Change-Id: I930a0309d6d8221ee4cb62a3b76b12740992743e --- diff --git a/src/mapzen/mapzen_util.c b/src/mapzen/mapzen_util.c index 3df9bc9..9128a10 100644 --- a/src/mapzen/mapzen_util.c +++ b/src/mapzen/mapzen_util.c @@ -48,12 +48,12 @@ void calculate_point(gdouble Lat1, gdouble Lon1, int dBearing, gdouble dist, coo double wrap_longitude(double longitude) { - return fmod(longitude, 180.0); + return longitude - round(longitude / 360.0) * 360.0; } double wrap_latitude(double latitude) { - return fmod(latitude, 90.0); + return latitude - round(latitude / 180.0) * 180.0; } double degrees_to_radians(double degrees) diff --git a/src/mapzen/tangram_view.cpp b/src/mapzen/tangram_view.cpp index 2abf376..b241d28 100644 --- a/src/mapzen/tangram_view.cpp +++ b/src/mapzen/tangram_view.cpp @@ -312,6 +312,8 @@ mapzen_error_e TangramView::moveCenter(maps_view_h view, int delta_x, int delta_ double y = 0.5 * m_h + (double)delta_y; double lng = 0.0, lat = 0.0; if (m_map->screenPositionToLngLat(x, y, &lng, &lat)) { + lng = wrap_longitude(lng); + lat = wrap_latitude(lat); m_map->setPosition(lng, lat); }