def get_tile_from_coord(self, coord, layer, mapServ, styleID): href = self.get_url_from_coord(coord, layer, mapServ, styleID) if href: try: print 'downloading:', href oa = openanything.fetch(href) if oa['status']==200: return oa['data'] else: raise RuntimeError, ("HTTP Reponse is: " + str(oa['status']),) except: raise
def search_location(location): print 'downloading the following location:', location try: oa = openanything.fetch( 'http://maps.google.com/maps?q=' + urllib.quote_plus(location) ) except Exception: return 'error=Can not connect to http://maps.google.com', None if oa['status']!=200: return 'error=Can not connect to http://maps.google.com', None m = 0 html = oa['data'] if html.find('We could not understand the location') < 0: # List of patterns to look for the location name paList = ['laddr:"([^"]+)"', 'daddr:"([^"]+)"'] for srtPattern in paList: p = re.compile(srtPattern) m = p.search(html) if m: break if m: location = m.group(1) else: return 'error=Location %s not found' % location, None # List of patterns to look for the latitude & longitude paList = ['center:{lat:([0-9.-]+),lng:([0-9.-]+)}.*zoom:([0-9.-]+)', 'markers:.*lat:([0-9.-]+),lng:([0-9.-]+).*laddr:', 'dtlsUrl:.*x26sll=([0-9.-]+),([0-9.-]+).*x26sspn'] for srtPattern in paList: p = re.compile(srtPattern) m = p.search(html) if m: break if m: zoom = 10 if m.group(0).find('zoom:') != -1: zoom = set_zoom(MAP_MAX_ZOOM_LEVEL - int(m.group(3))) else: p = re.compile('center:.*zoom:([0-9.-]+).*mapType:') m = p.search(html) if m: zoom = set_zoom(MAP_MAX_ZOOM_LEVEL - int(m.group(1))) location = unicode(location, errors='ignore') return location, (float(m.group(1)), float(m.group(2)), zoom) else: return 'error=Unable to get latitude and longitude of %s ' % location
def layer_url_template(layer): if layer not in known_layers: map_server_query = ["", "h", "p"] layers_name = ["m", "s", "t"] oa = openanything.fetch( 'http://maps.google.com/maps?t=' + map_server_query[layer]) if oa['status'] != 200: print "Trying to fetch http://maps.google.com/maps but failed" return None html = oa['data'] known_layers[layer] = parse_start_page(layers_name[layer], html) return known_layers[layer]