GeoView : bad centering near longitude 0.0 and latitude 0.0

svn: r11774
This commit is contained in:
Serge Noiraud 2009-01-31 11:32:50 +00:00
parent 1e6da8730c
commit d14c1145d1

View File

@ -197,13 +197,47 @@ class RendererWebkit(Renderer):
Renderer.__init__(self) Renderer.__init__(self)
self.window = webkit.WebView() self.window = webkit.WebView()
self.browser = WEBKIT self.browser = WEBKIT
self.window.get_main_frame().connect("load-done", self.page_loaded) self.frame = self.window.get_main_frame()
self.frame.connect("load-done", self.page_loaded)
self.window.connect("load-started", self.page_begin_load) self.window.connect("load-started", self.page_begin_load)
self.window.connect("hovering-over-link", self.hover_link_cb)
#self.window.connect("navigation-requested", self.navigation)
self.window.connect("load-progress-changed", self.load_progress)
#self.window.connect("script-alert", self.script_alert_cb)
#self.window.connect("script-confirm", self.script_confirm_cb)
#self.window.connect("script-prompt", self.script_prompt_cb)
def page_loaded(self,obj,status): def page_loaded(self,obj,status):
self.set_button_sensitivity() self.set_button_sensitivity()
def page_begin_load(self,obj,stat): def page_begin_load(self,view,frame):
if frame is self.frame:
LOG.debug(_("load-started : %s") % self.get_uri())
pass
def navigation(self,view,frame,networkrequest):
LOG.debug(_("navigation-requested : %s") % frame.get_uri())
return 1
def load_progress(self,view,percent):
#LOG.debug(_("load-progress-changed : load %s : %s%%") % (view.get_main_frame().get_uri(), percent))
pass
def hover_link_cb(self,view,title,url):
if view and url:
LOG.debug(_("hovering-over-link : %s - %s") % (title, url))
def script_confirm_cb(self, view, frame, message, isConfirmed):
LOG.debug("script confirm")
pass
def window_event_cb(self, view, event, message, fromwindow):
LOG.debug("event!", event, view, message )
LOG.debug(event.get_event_type() )
return True
def script_prompt_cb(self, view, frame, message, default, text):
LOG.debug("script prompt")
pass pass
def open(self, url): def open(self, url):
@ -239,6 +273,7 @@ class RendererMozilla(Renderer):
self.set_button_sensitivity() self.set_button_sensitivity()
def page_begin_load(self,obj): def page_begin_load(self,obj):
LOG.debug(_("Loading - %s") % self.get_uri())
pass pass
def open(self, url): def open(self, url):
@ -856,7 +891,7 @@ class GeoView(HtmlView):
if self.without != 0: if self.without != 0:
self.without_coord_file = GEOVIEW_SUBPATH+"/without_coord.html" self.without_coord_file = GEOVIEW_SUBPATH+"/without_coord.html"
self.mapview.write("<div id='coord' font=-4 >You have <a href=\"%s\" >%d<a>" % ( self.without_coord_file, self.without ) ) self.mapview.write("<div id='coord' font=-4 >You have <a href=\"%s\" >%d<a>" % ( self.without_coord_file, self.without ) )
self.mapview.write(" places without coordinates</div>\n" ) self.mapview.write(" places without coordinates<a href=\"gramps://place:P0005\" >test</a></div>\n" )
self.create_page_for_places_without_coordinates() self.create_page_for_places_without_coordinates()
if self.displaytype != "places": if self.displaytype != "places":
self.mapview.write(" <Div id='btns' font=-4 >\n") self.mapview.write(" <Div id='btns' font=-4 >\n")
@ -1028,8 +1063,8 @@ class GeoView(HtmlView):
else: else:
self.zoom = zoomlong self.zoom = zoomlong
self.zoom -= 1 self.zoom -= 1
if self.zoom < 1: if self.zoom < 2:
self.zoom = 1 self.zoom = 2
# We center the map on a point at the center of all markers # We center the map on a point at the center of all markers
self.centerlat = maxlat/2 self.centerlat = maxlat/2
self.centerlon = maxlong/2 self.centerlon = maxlong/2
@ -1041,24 +1076,29 @@ class GeoView(HtmlView):
self.centered = True self.centered = True
if ( signminlat == signmaxlat ): if ( signminlat == signmaxlat ):
if self.maxlat > self.centerlat: if signminlat == 1:
latit = self.maxlat-self.centerlat latit = self.minlat+self.centerlat
else: else:
latit = self.maxlat+self.centerlat latit = self.maxlat-self.centerlat
elif self.maxlat > self.centerlat: elif self.maxlat > self.centerlat:
latit = self.maxlat-self.centerlat latit = self.maxlat-self.centerlat
else: else:
latit = self.maxlat+self.centerlat latit = self.minlat+self.centerlat
if ( signminlon == signmaxlon ): if ( signminlon == signmaxlon ):
if self.maxlon > self.centerlon: if signminlon == 1:
longt = self.maxlon-self.centerlon longt = self.minlon+self.centerlon
else: else:
longt = self.maxlon+self.centerlon longt = self.maxlon-self.centerlon
elif self.maxlon > self.centerlon: elif self.maxlon > self.centerlon:
longt = self.maxlon-self.centerlon longt = self.maxlon-self.centerlon
else: else:
longt = self.maxlon+self.centerlon longt = self.minlon+self.centerlon
# for all maps, 0.0 for longitude and latitude means no location.
if latit == 0.0 and longt == 0.0:
latit = 0.00000001
longt = 0.00000001
LOG.debug( "self.maxlon = %f\n" % self.maxlon) LOG.debug( "self.maxlon = %f\n" % self.maxlon)
LOG.debug("self.minlon = %f\n" % self.minlon) LOG.debug("self.minlon = %f\n" % self.minlon)
LOG.debug("self.maxlat = %f\n" % self.maxlat) LOG.debug("self.maxlat = %f\n" % self.maxlat)
@ -1135,23 +1175,38 @@ class GeoView(HtmlView):
if c > self.maxyear: if c > self.maxyear:
self.maxyear = c self.maxyear = c
if a < 0.0:
a = a - 0.00000001
else:
a = a + 0.00000001
if b < 0.0:
b = b - 0.00000001
else:
b = b + 0.00000001
if self.minlat == 0.0: if self.minlat == 0.0:
self.minlat = a self.minlat = a
if a < self.minlat: if a < self.minlat:
self.minlat = a if a < 0.0:
self.minlat = a
if self.maxlat == 0.0: if self.maxlat == 0.0:
self.maxlat = a self.maxlat = a
if a > self.maxlat: if a > self.maxlat:
self.maxlat = a if a > 0.0:
self.maxlat = a
if self.minlon == 0.0: if self.minlon == 0.0:
self.minlon = b self.minlon = b
if b < self.minlon: if b < self.minlon:
self.minlon = b if b < 0.0:
self.minlon = b
if self.maxlon == 0.0: if self.maxlon == 0.0:
self.maxlon = b self.maxlon = b
if b > self.maxlon: if b > self.maxlon:
self.maxlon = b if b > 0.0:
self.maxlon = b
def isyearnotinmarker(self,allyears,year): def isyearnotinmarker(self,allyears,year):
ret = 1 ret = 1