def pictureUrlForRoute(polyLine, markerList): road_styles = [{ 'feature': 'road.highway', 'element': 'geomoetry', 'rules': { 'visibility': 'simplified', 'color': '#c280e9' } }, { 'feature': 'transit.line', 'rules': { 'visibility': 'simplified', 'color': '#bababa' } }] dmap = DecoratedMap(style=road_styles) for index, point in enumerate(markerList): if (len(point) == 3): dmap.add_marker( LatLonMarker(point[0], point[1], size="tiny", icon_url="http:" + str(point[2]))) else: if index == len(markerList) - 1: dmap.add_marker(LatLonMarker(point[0], point[1], label='B')) elif index == 0: dmap.add_marker(LatLonMarker(point[0], point[1], label='A')) else: dmap.add_marker( LatLonMarker(point[0], point[1], size="small", color="blue")) # dmap.add_marker(LatLonMarker(origin[0], origin[1],label='A')) # dmap.add_marker(LatLonMarker(destination[0], destination[1],label='B')) dmap.add_path_latlon(46.7623430, 23.5575370) dmap.add_path_latlon(46.7765820, 23.6037750) return handlePictureUrl(dmap.generate_url(), polyLine)
class MapWindow(Frame): def __init__(self, master): Frame.__init__(self, master) self.caption = Label(self, text="Hi") self.caption.pack() self.initMap() self.image = ImageTk.PhotoImage(self.im) self.image_label = Label(self, image=self.image, bd=0) self.image_label.pack() self.pack(side="top", fill="both", expand=True) # Open up data log file self.dataFileHandle = open("/home/spex/habip_data.log", "r") self.dataFileHandle.seek(0, 2) # Seek to the end of the log file self.latList = [] self.lonList = [] self.id = self.after(1000, self.mapLoop) def initMap(self): self.fileName = "/home/spex/habipMapStart.jpg" # Generate map URL self.map = DecoratedMap(key="AIzaSyDzElKnTJkAewIuxuAUZJYmRfXz1mg0vYU") # Add marker for Meteor Lab to start at self.map.add_marker(LatLonMarker(lat=43.08463, lon=-77.67914)) self.map.add_path_latlon(lat=43.08463, lon=-77.67914) self.requestUrl = self.map.generate_url() # Save image to disk urllib.urlretrieve(self.requestUrl, self.fileName) self.im = Image.open(self.fileName) def mapLoop(self): # Grab new command log lines dataLine = self.dataFileHandle.readline() while dataLine: if len(dataLine) > 1: dataLineParts = dataLine.split( ",") # Sensor data is comma separated # Grab latitude and longitude lat = dataLineParts[60] # N (+) or S (-) lon = dataLineParts[61] # E (+) or W (-) # Just continue if there is data present if (lat != "NULL") and (lon != "NULL"): # Change latitude and longitude to be +- instead of direction #if lat[-1] == "N": # lat = lat[:-1] #elif lat[-1] == "S": # lat = "-" + lat[:-1] #if lon[-1] == "E": # lon = lon[:-1] #elif lon[-1] == "W": # lon = "-" + lon[:-1] # Add latitude and longitude to lists self.latList.append(lat) self.lonList.append(lon) self.updateImage() dataLine = self.dataFileHandle.readline() self.id = self.after( 1000, self.mapLoop ) # Keep checking for more data (keep re-calling this function) every 1000ms def updateImage(self): self.fileName = "/home/spex/habipMapUpdated.jpg" # Generate map URL self.map = DecoratedMap(key="AIzaSyDzElKnTJkAewIuxuAUZJYmRfXz1mg0vYU") for lat, lon in zip(self.latList, self.lonList): self.map.add_marker(LatLonMarker(lat=lat, lon=lon)) self.map.add_path_latlon(lat=lat, lon=lon) self.requestUrl = self.map.generate_url() # Save image to disk urllib.urlretrieve(self.requestUrl, self.fileName) self.im.close() self.im = Image.open(self.fileName) self.image = ImageTk.PhotoImage(self.im) self.image_label.configure(image=self.image)