]> git.street.me.uk Git - andy/viking.git/blobdiff - src/vikwebtoolcenter.c
Tidy up: simpler and better use of trackpoint free methods in TRW Layer.
[andy/viking.git] / src / vikwebtoolcenter.c
index eed97c1cc2d27ffc3900c7381e7d1727a32945a2..7ba2ad772b12cf51f520f40cc7e4a3ab3ba5ff07 100644 (file)
@@ -207,7 +207,11 @@ static guint8 webtool_center_mpp_to_zoom ( VikWebtool *self, gdouble mpp ) {
       return i;
     }
   }
-  return 255;
+  // Handle mpp smaller than 1
+  // return a useful value such that '17 - this number' gives a natural number.
+  // Ideally should return '-1' or '0.5' but that's tricky with an unsigned int type!
+  // (i.e. should rework to support zoom levels of 18 or 19)
+  return 0;
 }
 
 static gchar *webtool_center_get_url ( VikWebtool *self, VikWindow *vwindow )
@@ -226,9 +230,11 @@ static gchar *webtool_center_get_url ( VikWebtool *self, VikWindow *vwindow )
   coord = vik_viewport_get_center ( viewport );
   vik_coord_to_latlon ( coord, &ll );
 
-  // zoom
-  g_assert ( vik_viewport_get_xmpp ( viewport ) == vik_viewport_get_ympp ( viewport ) );
-  zoom = vik_webtool_center_mpp_to_zoom ( self, vik_viewport_get_zoom ( viewport ) );
+  // zoom - ideally x & y factors need to be the same otherwise use a default
+  if ( vik_viewport_get_xmpp ( viewport ) == vik_viewport_get_ympp ( viewport ) )
+    zoom = vik_webtool_center_mpp_to_zoom ( self, vik_viewport_get_zoom ( viewport ) );
+  else
+    zoom = 1.0;
 
   // Cannot simply use g_strdup_printf and gdouble due to locale.
   // As we compute an URL, we have to think in C locale.