def create_map(self, *args): _, latitude, longitude, markers = args markers = pickle.loads(markers) map = MapView(zoom=12, lat=latitude, lon=longitude, size_hint=(1, .8)) marker_layer = MarkerMapLayer() map.add_layer(marker_layer) for (lat, lon) in markers: # print(type(lat),type(lon)) map.add_marker(MapMarker(lat=lat, lon=lon, source='images/mmy_marker.png'), layer=marker_layer) return map
def draw_iss_path(self): # Path is drawn every 5 mins if self.utcnow() - self.last_path_update > 30: try: self.map.remove_layer(self.mmlayer) except: pass self.mmlayer = MarkerMapLayer() # Create markers showing the ISS's position every 5 mins for i in range(20): lat, lon = self.get_loc(datetime.now() + timedelta(0, i * 300)) self.mmlayer.add_widget( MapMarker(lat=lat, lon=lon, source=self.path_icon)) # Update the flag so we know when next update should be run self.last_path_update = self.utcnow() # Add the layer and call the reposition function otherwise the # markers don't show otherwise! self.map.add_layer(self.mmlayer) self.mmlayer.reposition()
def __init__(self, walking_widget): super().__init__() self.walking_widget = walking_widget self.widget_layout = FloatLayout() self.origin_size = (1, 1) self.map_view = MapView(zoom=12, lat=37.5606, lon=126.9790) # gps에서 현재위치 받아서 띄우기 self.cur_lat, self.cur_lon = 37.5606, 126.9790 self.marker_layer = MarkerMapLayer() self.map_view.add_layer(self.marker_layer) self.positions = [(self.cur_lat, self.cur_lon)] self.save_button = Button(text='save', pos_hint={ 'x': 0.0, 'y': 0.0 }, size_hint=(.1, .1)) self.clear_button = Button(text='clear', pos_hint={ 'x': 0.1, 'y': 0.0 }, size_hint=(.1, .1)) self.items_bind()
def draw_rout(self, lat, lon): self.data_lay = MarkerMapLayer() self.my_map.add_layer(self.data_lay) lat = lat[::10] lon = lon[::10] for point in zip(lat, lon): self.draw_marker(*point, layer=self.data_lay)
def draw_route(self,lat,lon):#narysowanie trasy data_lay = MarkerMapLayer() self.my_map.set_zoom_at(11, 0, 0, scale=None) lat_ = float(np.mean(lat)) lon_ = float(np.mean(lon)) self.my_map.center_on(lat_, lon_) self.my_map.add_layer(data_lay) # my_map jest obiektem klasy MapView for point in zip(lat,lon): self.draw_marker(*point,layer = data_lay)
def draw_route(self, df): self.data_layer = MarkerMapLayer( ) #utworzenie warstwy, creating instance of class MarkerMapLayer self.my_map.add_layer(self.data_layer) #dodanie warstwy do mapy for i in range(df.shape[0]): self.mark_point(lat=float((df.iloc[i, 0]) * 180 / pi), lon=float(df.iloc[i, 1] * 180 / pi), layer=self.data_layer) #narysowanie trasy
def __init__(self, lat=51.5, lon=0, zoom=8, url="http://localhost/dump1090/data/aircraft.json", interval=1): self.aircraft_layer = MarkerMapLayer() self.update_in_progress = False self.list_of_tracked_aircraft = [] self.aircraft_markers = [] self.url = url super().__init__(lat=lat, lon=lon, zoom=zoom) self.add_layer(self.aircraft_layer) Clock.schedule_interval(self.request_update, interval)
def search_location(self): #funkcja lokalizująca obiekty self.data_layer = MarkerMapLayer() self.my_map.add_layer(self.data_layer) self.lati = self.my_map.lat self.long = self.my_map.lon print(self.lati) print(self.long) list_of_points = [[ 'zegar_praga.jpg', 50 + 5 / 60 + 12 / 3600, 14 + 25 / 60 + 14 / 3600 ], ['sagrada_familia.jpg', 50.06465009, 19.94497990000002], ['sacre_coeur.jpg', 48.8863280, 2.3430490], ['london_eye.jpg', 51.5007316, -0.1186893], ['notre_dame.jpg', 48.8540278, 2.3473245], ['koloseum.jpg', 41.8895897, 12.4940828], ['fontanna.jpg', 41.9008219, 12.4830284], ['eiffel_tower.jpg', 48.8583157, 2.2943230], ['big_ben.jpg', 51.4995730, -0.1245830], ['arc.jpg', 48.8738178, 2.2950626], ['akropol.jpg', 37.9666670, 23.7166670]] try: self.my_map.remove_marker(self.marker) except: pass self.latitude = self.my_map.lat self.longitude = self.my_map.lon self.marker = MapMarker(lat=self.latitude, lon=self.longitude) self.my_map.add_marker(self.marker) #zmiana formatu wywietlania znakow self.search_lat.text = "{:5.5f}".format(self.latitude) self.search_long.text = "{:5.5f}".format(self.longitude) #użycie funkcji obliczającej odległosc for i in range(len(list_of_points)): if self.pic.source == list_of_points[i][0]: s = funkcja.Vincenty(self.lati * pi / 180, self.long * pi / 180, list_of_points[i][1] * pi / 180, list_of_points[i][2] * pi / 180) points = [] if s > 100: self.tekst.text = "Odleglosc pomiedzy {} m".format(round(s, 3)) score = 0 points.append(score) else: self.tekst.text = "zdobywasz punkt!" score = 1 points.append(score) sum_of_points = points.count(1) self.score.text = "Twoje punkty : {}".format(sum_of_points)
def __init__(self, **kwargs): super(Editor, self).__init__(**kwargs) self.marker_layer = MarkerMapLayer() self.current_layer = GeoJsonMapLayer() self.result_layer = GeoJsonMapLayer() self.result_layer.geojson = kwargs["geojson"] self.geojson_fn = kwargs["geojson_fn"] self.ids.mapview.add_widget(self.current_layer) self.ids.mapview.add_widget(self.result_layer) self.ids.mapview.add_widget(self.marker_layer)
def build(self): self.mapview = MapView(lat=51.48, lon=-3.17, zoom=11) self.mapLayer = MarkerMapLayer() for i in locations: locationLat = float(locations[i][0]) locationLon = float(locations[i][1]) marker = MapMarker(lat=locationLat, lon=locationLon) self.mapLayer.add_widget(marker) self.mapview.add_layer(self.mapLayer) self.add_widget(self.mapview)
def mark_boys(self): # boy = MarkerMapLayer() self.add_layer(boy) longitude = -71.979914 latitude = 41.800495 m1 = MapMarker(lon=longitude, lat=latitude, source=r'blue_pin.png') m1.bind(on_press=pop_that) self.add_marker(m1, layer=boy)
def mark_girls(self): # used to draw in all girl's changing rooms # change icon to pink girl = MarkerMapLayer() self.add_layer(girl) longitude = -72.979914 latitude = 40.800495 m1 = MapMarker(lon=longitude, lat=latitude, source=r'pink_pin.png') m1.bind(on_press=pop_that) self.add_marker(m1, layer=girl)
def draw_marker(self): data_lay = MarkerMapLayer() self.my_map.add_layer(data_lay) for i in range(len(self.lati)): marker = MapMarker(lat=self.lati[i], lon=self.loni[i], source="dot.png") self.my_map.add_marker(marker, layer=data_lay) self.my_map.set_zoom_at(10, self.lati[1], self.loni[1], scale=None) self.my_map.center_on(self.lati[1], self.loni[1])
def __init__(self): super().__init__() self.origin_size = (1, 1) self.widget_layout = FloatLayout() #줌을 12에서 붐비는정도라는 의도에 걸맞게 zoom을 높여주기 -> ux 개선사항 self.map_view = MapView(zoom=14, lat=37.5606, lon=126.9790) # gps에서 현재위치 받아서 띄우기 self.cur_lat, self.cur_lon = 37.5606, 126.9790 self.marker_layer = MarkerMapLayer() self.map_view.add_layer(self.marker_layer) self.items_bind()
def __init__(self, **kwargs): #super(ISSScreen, self).__init__(**kwargs) super(ISSScreen, self).__init__() self.name = kwargs["name"] # Set the path for the folder self.path = os.path.dirname(os.path.abspath(__file__)) # Set the path for local images self.imagefolder = os.path.join(self.path, "images") # Ephem calculates the position using the Two Line Element data # We need to make sure we have up to date info tle = self.get_TLE() # Create an iss object from which we can get positional data self.iss = ephem.readtle(*tle) # Run the calculations self.iss.compute() # Get positon of iss and place a marker there lat, lon = self.get_loc() self.marker = MapMarker(lat=lat, lon=lon) # Create a value to check when we last drew ISS path self.last_path_update = 0 # Create the path icon self.path_icon = os.path.join(self.imagefolder, "dot.png") # Create the world map #self.map = MapView(id="mpv",lat=0, lon=0, zoom=1, scale=1.5) self.map = MapView(lat=0, lon=0, zoom=1) x, y = self.map.get_window_xy_from(0, 0, 1) self.map.scale_at(1.2, x, y) # Add the ISS marker to the map and draw the map on the screen print("add map") self.map.add_widget(self.marker) print("add widget") self.add_widget(self.map) # Add a new layer for the path self.mmlayer = MarkerMapLayer() self.draw_iss_path() self.timer = None
def draw_markers(self, lats, lons, h_lat, h_lon): ''' Rysuj markery! I najtrudniejsze miejsce''' # Ale najpierw skasujmy stare markery self.remove_markers() self.data_layer = MarkerMapLayer() self.map_.add_layer(self.data_layer) # Nie chcemy za dużo punktów narysować if len(lats) > 50: print('ZA DUŻO PUNKTÓW GPS!!!!') co_ile = int(len(lats) / 50) print('Wybieramy co %d punkt aby wyświetlić 50/51 punktów') lats = lats[::co_ile] lons = lons[::co_ile] for lat, lon in zip(lats, lons): marker = MapMarker(lat=lat, lon=lon) self.map_.add_marker(marker, layer=self.data_layer) n = len(lats) # Ładnie centrujemy mapkę! self.map_.center_on(sum(lats) / n, sum(lons) / n) # Rysuj położenie najtrudniejszego odcinka marker = MapMarker(lat=h_lat, lon=h_lon, source='cluster.png') self.map_.add_marker(marker, layer=self.data_layer)
def draw_route(self, lon, lat): data_layer = MarkerMapLayer() self.my_map.add_layer(data_layer) for point in zip(lat, lon): self.mark_point(*point, layer=data_layer)
def draw_route(self, lat, lon): # utworzenie nowej warstwy i dodanie jej do mapy data_layer = MarkerMapLayer() self.my_map.add_layer(data_layer) # my_map jest obiektem klasy MapView for point in zip(lat, lon): self.mark_point(*point, layer=data_layer)
def draw_route(self, lat, lon): data_layer = MarkerMapLayer() for point in zip(lat, lon): self.mark_point(*point, layer=data_layer)
def analyse_file(self): filename = self.txt1.text #wczytanie pliku lat, lon, lat1, lat2, lon1, lon2, el, dates, elstart, elstop, datesstop, datesstart, delta, sekundy, sumdates, lat1wyk, lon1wyk = biblio.wczytaj_plik( filename) #---------------------HAVERSINE------------------------------------------------ def haversine(origin, destination): lat1, lon1 = origin lat2, lon2 = destination radius = 6371000 # m dlat = np.radians(lat2 - lat1) dlon = np.radians(lon2 - lon1) a = np.sin(dlat/2) * np.sin(dlat/2) + np.cos(np.radians(lat1)) \ * np.cos(np.radians(lat2)) * np.sin(dlon/2) * np.sin(dlon/2) c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1 - a)) d = radius * c return d #------------------rysowanie poczatku trasy------------------------------------ self.data_lay = MarkerMapLayer() self.my_map.add_layer(self.data_lay) marker = MapMarker(lat=lat[0], lon=lon[0], source="dot.png") self.my_map.add_marker(marker, layer=self.data_lay) #-----------------------obliczenia--------------------------------------------- dist_part = haversine((lat1, lon1), (lat2, lon2)) # m sumdist = sum(dist_part) #długosć całkowita trasy - pozioma alt_part = (elstop - elstart) #przwyższenia na odcinkach trasy def przewyzszenie_dodatnie(alt_part): #całkowite przewyższenie w górę dodatnie = [] for przewyzszenie in alt_part: if przewyzszenie >= 0: dodatnie.append(przewyzszenie) return dodatnie def przewyzszenie_ujemne(alt_part): #całkowite przewyższenie w dół ujemne = [] for przewyzszenie in alt_part: if przewyzszenie < 0: ujemne.append(przewyzszenie) return ujemne altsum = sum(alt_part) #całkowite przewyższenie na trasie odl3D = np.sqrt((dist_part**2 + alt_part**2)) #odległosć skosna sum3D = sum(odl3D) #całkowita odleglosc skosna trasy #------------------predkosci--------------------------------------------------- if sekundy > 0: v = dist_part / sekundy #m/s vavg = sum(v) / len(v) p7 = str(round(vavg, 3)) else: v = 0 vavg = 0 p7 = str('Brak') #-------------wyswietlanie statystyk------------------------------------------- p1 = str(round(sumdist, 3)) p2 = str(round(sum3D, 3)) p3 = str(round(altsum, 3)) p4 = str(round(sum(np.array(przewyzszenie_dodatnie(alt_part))), 3)) p5 = str(round(sum(np.array(przewyzszenie_ujemne(alt_part))), 3)) p6 = str(sumdates) p8 = str(round(max(el), 3)) p9 = str(round(min(el), 3)) self.txt2.text = 'Statystyki:' self.txt2.text += '\nCałkowita odległość (długość) pozioma [m] ' self.txt2.text += p1 self.txt2.text += '\nCałkowita odległość skośna [m] ' self.txt2.text += p2 self.txt2.text += '\nCałkowite przewyższenie [m] ' self.txt2.text += p3 self.txt2.text += '\nw tym: w górę / w dół ' self.txt2.text += p4 self.txt2.text += ' / ' self.txt2.text += p5 self.txt2.text += '\nCzas [h:m:s] ' self.txt2.text += p6 self.txt2.text += '\nSrednia predkość [m/s] ' self.txt2.text += p7 self.txt2.text += '\nMaksymalna wysokość [m] ' self.txt2.text += p8 self.txt2.text += '\nMinimalna wysokość [m] ' self.txt2.text += p9
def draw_route(self, lat, lon): #rysowanie trasy data_lay = MarkerMapLayer() self.my_map.add_layer(data_lay) # my_map jest obiektem klasy MapView for point in zip(lat, lon): self.draw_marker(*point, layer=data_lay)