def show_maps(): # Параметры позиционирования карты и ее тип. map_locations = { # "Австралия": ("ll=135.746181,-27.483765&spn=20,20", "sat"), "Алматы": ("ll=76.964531,43.242508&z=10", "map") } for map_location, map_type in map_locations.values(): show_map(map_location, map_type)
def show_spb_route(): spb_location = "ll=30.097431,59.908131&spn=0.2,0.2" route_points = [ "29.914783,59.891574", "30.105881,59.944074", "30.237944,59.916487", "30.266268,59.919073", "30.275489,59.930952", "30.310165,59.941203" ] line = ",".join(route_points) line_param = f"pl={line}" show_map(spb_location, "map", add_params=line_param)
def show_moscow_stadiums(): moscow_location = "ll=37.622169,55.750493&spn=0.25,0.25" stadiums_location = { "Лужники": "37.554191,55.715551", "Спартак": "37.440262,55.818015", "Динамо": "37.559809,55.791540" } points = "~".join([pt for pt in stadiums_location.values()]) points_param = f"pt={points}" show_map(moscow_location, "map", add_params=points_param)
def show_spb_route(): # Параметр позиционирования карты. spb_location = "ll=30.097431,59.908131&spn=0.2,0.2" route_points = [ "29.914783,59.891574", "30.105881,59.944074", "30.237944,59.916487", "30.266268,59.919073", "30.275489,59.930952", "30.310165,59.941203" ] # Формируем параметр линию. line = ",".join(route_points) line_param = f"pl={line}" show_map(spb_location, "map", add_params=line_param)
def show_moscow_stadiums(): # Параметр позиционирования карты. moscow_location = "ll=37.622169,55.750493&spn=0.25,0.25" stadiums_location = { "Лужники": "37.554191,55.715551", "Спартак": "37.440262,55.818015", "Динамо": "37.559809,55.791540" } # Формируем параметр для рисования точек на карте. points = "~".join([pt for pt in stadiums_location.values()]) points_param = f"pt={points}" show_map(moscow_location, "map", add_params=points_param)
def main(): # Параметры позиционирования карты. location = "ll=30.097431,59.908131&spn=0.2,0.2" # Маршрут для отображения. route_points = [ "29.914783,59.891574", "30.105881,59.944074", "30.237944,59.916487", "30.266268,59.919073", "30.275489,59.930952", "30.310165,59.941203" ] # Формируем параметр для рисования линии. line = ",".join(route_points) line_param = f"pl={line}" # Формируем параметр для рисования метки. point = route_points[int(round(len(route_points) / 2))] point_param = f"pt={point}" # Рисуем карту с линией и меткой. show_map(location, "map", add_params="&".join([line_param, point_param]))
def main(): towns = [ "Ярославль", "Нижний Новгород", "Казань", "Великий Новгород", "Архангельск", "Саратов", "Петрозаводск", "Астрахань" ] random.shuffle(towns) for town in towns: # Показываем карту с масштабом, подобранным по заданному объекту. ll, spn = get_ll_span(town) map_type = "sat" if random.random() > 0.5: spn = "0.001,0.001" map_type = "map" ll_spn = "ll={ll}&spn={spn}".format(**locals()) show_map(ll_spn, map_type)
def main(): toponym_to_find = " ".join(sys.argv[1:]) if not toponym_to_find: print('No data') exit(1) lat, lon = get_coordinates(toponym_to_find) address_ll = f"{lat},{lon}" # Подбираем масштаб, чтобы получить минимум 10 аптек. delta = 0.01 organizations = [] while delta < 100 and len(organizations) < 10: delta *= 2.0 span = f"{delta},{delta}" organizations = find_businesses(address_ll, span, "аптека") # Формируем список из координат аптек и их круглосуточности farmacies_with_time = [] for org in organizations: point = org["geometry"]["coordinates"] hours = org["properties"]["CompanyMetaData"].get("Hours", None) if hours: # У организации есть данные о времени работы available = hours["Availabilities"][0] is_24x7 = available.get("Everyday", False) and available.get("TwentyFourHours", False) else: # Данных о времени работы нет. is_24x7 = None # Запоминаем полученные данные. farmacies_with_time.append((point, is_24x7)) # Формируем параметр с точками points_param = "pt=" + "~".join([ f'{point[0]},{point[1]},pm2{"gn" if is_24x7 else ("lb" if not is_24x7 else "gr")}l' for point, is_24x7 in farmacies_with_time]) # Используем автопозиционирование карты по всем меткам. show_map(map_type="map", add_params=points_param)
def main(): toponym_to_find = " ".join(sys.argv[1:]) if toponym_to_find: # Показываем карту с фиксированным масштабом. lat, lon = get_coordinates(toponym_to_find) ll_spn = f"ll={lat},{lon}&spn=0.005,0.005" show_map(ll_spn, "map") # Показываем карту с масштабом, подобранным по заданному объекту. ll, spn = get_ll_span(toponym_to_find) ll_spn = f"ll={ll}&spn={spn}" show_map(ll_spn, "map") # Добавляем исходную точку на карту. point_param = f"pt={ll}" show_map(ll_spn, "map", add_params=point_param) else: print('No data')
def main(): toponym_to_find = " ".join(sys.argv[1:]) lat, lon = get_coordinates(toponym_to_find) address_ll = f"{lat},{lon}" span = "0.005,0.005" # Получаем координаты ближайшей аптеки. organization = find_business(address_ll, span, "аптека") point = organization["geometry"]["coordinates"] org_lat = float(point[0]) org_lon = float(point[1]) point_param = f"pt={org_lat},{org_lon},pm2dgl" show_map(f"ll={address_ll}&spn={span}", "map", add_params=point_param) # Добавляем на карту точку с исходным адресом. points_param = point_param + f"~{address_ll},pm2rdl" show_map("ll={0}&spn={1}".format(address_ll, span), "map", add_params=points_param) # Автопозиционирование show_map(map_type="map", add_params=points_param) # Сниппет # Название организации. name = organization["properties"]["CompanyMetaData"]["name"] # Адрес организации. address = organization["properties"]["CompanyMetaData"]["address"] # Время работы time = organization["properties"]["CompanyMetaData"]["Hours"]["text"] # Расстояние distance = round(lonlat_distance((lon, lat), (org_lon, org_lat))) snippet = f"Название:\t{name}\nАдрес:\t{address}\nВремя работы:\t{time}\n" \ f"Расстояние:\t{distance}м." print(snippet)
running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYUP: if event.key == pygame.K_ESCAPE: running = False # if event.key == pygame.K_PAGEUP: # if zoom < 23: # zoom += 1 # elif event.key == pygame.K_PAGEDOWN: # if zoom > 0: # zoom -= 1 if event.type == pygame.MOUSEBUTTONUP: if event.button == 4 and zoom < 23: zoom += 1 elif event.button == 5 and zoom > 0: zoom -= 1 ll_spn = f'll={lat},{lon}&z={zoom}' point_param = f'pt={lat},{lon}' show_map(ll_spn, 'map', point_param) screen.blit(pygame.image.load(map_file), (0, 0)) pygame.display.flip() pygame.quit() # Удаляем за собой файл с изображением. os.remove(map_file) else: print('Нет данных')
from Samples.geocoder import get_ll_span from Samples.mapapi_PG import show_map coords = input('Введите координаты через запятую без пробела: ') ll, spn = get_ll_span(coords) show_map(f'll={ll}&spn={spn}')
from Samples.mapapi_PG import show_map LON_STEP = 0.01 LAN_STEP = 0.025 print('Что вы хотите найти?') t = input() gl = 'map' if __name__ == '__main__': toponym_to_find = t if toponym_to_find: zoom = 15 lat, lon = get_coordinates(toponym_to_find) ll_spn = f'll={lat},{lon}&z={zoom}' point_param = f'pt={lat},{lon}' show_map(ll_spn, 'map') else: print('Нет данных для поиска') map_file = 'map.png' pygame.init() screen = pygame.display.set_mode((600, 450)) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYUP: if event.key == pygame.K_ESCAPE: running = False
type_map = 'map' elif event.key == pygame.K_2: type_map = 'sat' elif event.key == pygame.K_3: type_map = 'sat,skl' if event.type == pygame.MOUSEBUTTONUP: if event.button == 4 and zoom < 23: zoom += 1 elif event.button == 5 and zoom > 0: zoom -= 1 if lon > 85: lon = 85 if lon < -85: lon = -85 if lat > 180: lat = 180 if lat < -180: lat = -180 ll_spn = f'll={lat},{lon}&z={zoom}' point_param = f'pt={lat_M},{lon_M}' show_map(ll_spn, type_map, point_param) screen.blit(pygame.image.load(map_file), (0, 0)) pygame.display.flip() pygame.quit() # Удаляем за собой файл с изображением. os.remove(map_file) else: print('Нет данных')
def show_maps(): map_locations = { "Австралия": ("ll=135.746181,-27.483765&spn=20,20", "sat") } for map_location, map_type in map_locations.values(): show_map(map_location, map_type)