Мне было интересно, не могли бы вы помочь мне с небольшим вопросом, который у меня возник. Я создал доску для планирования на одной странице, и люди могут вводить данные о стране на ней, а затем я создал карту на другой странице, которая наносит маркер на то место, которое они выбрали, и все это работает, но если я отредактирую страну, которая не обновляет карту, пока я не перестану запускать скрипт. Пожалуйста, можно мне несколько указателей?
Я создал его с фолием и использовал панды, MongoDB и geopy.
Я пробовал, пока и если циклы
Я думал поставить еще одно заявление в конце?
любые предложения будут с благодарностью
import os
from flask import Flask, render_template, url_for, request, redirect
from flask_pymongo import PyMongo
from bson.objectid import ObjectId
import folium
import requests
import pandas as pd
from geopy.geocoders import Nominatim
from geopy.extra.rate_limiter import RateLimiter
app = Flask(__name__)
geolocator = Nominatim(user_agent="Travel Tracker")
app.config["MONGO_DBNAME"] = 'travel_tracker'
app.config["MONGO_URI"] = os.getenv('MONGO_URI')
mongo = PyMongo(app)
countries = mongo.db.country.find()
hotels = mongo.db.hotel.find()
map_obj = folium.Map(location=[53.49, -2.24], zoom_start=5)
#map_obj.save('templates/travelmap.html')
url = requests.get('https://ipinfo.io/')
@app.route('/my_map')
def my_map():
global map_obj
return map_obj.get_root().render()
# Tracks your current location
@app.route('/travel_map')
def travel_map():
global map_obj
data = url.json()
my_loc = data['loc'].split(',')
folium.Marker(location=my_loc, popup="I am here").add_to(map_obj)
# Pulls info from MongoDB to get the coordinates to display on map
fg = folium.FeatureGroup(name="travel_map")
specific_country = mongo.db.country.find_one()
for count in countries:
df = pd.DataFrame({'name': count['country_name']}, index=[0])
geocode = RateLimiter(geolocator.geocode, min_delay_seconds=1)
df['location'] = df['name'].apply(geocode)
df['point'] = df['location'].apply(lambda loc: tuple(loc.point) if loc else None)
fg.add_child(folium.Marker(location=df['point'][0][:-1], popup=count['country_name'], icon=folium.Icon(color='purple')))
map_obj.add_child(fg)
return render_template('map.html', specific_country=specific_country)