Hola, quisiera saber si alguien me puede ayudar a resolver este problema. Estoy tratando de agregar direcciones de mi base de datos de Django en un Javascript que convertirá las direcciones en coordenadas largas/lat y, por lo tanto, me permitirá usar esas nuevas coordenadas como marcadores en un mapa de folleto.
Actualmente tengo el mapa cargado.
<body> <div id="map"></div> <script> var map = L.map('map').setView([37.116386, -98.299591], 5); L.tileLayer('https://api.maptiler.com/maps/basic-v2/256/{z}/{x}/{y}.png?key=APIKEY', { attributions: '<a href="https://www.maptiler.com/copyright/" target="_blank">© MapTiler</a> <a href="https://www.openstreetmap.org/copyright" target="_blank">© OpenStreetMap contributors</a>' }).addTo(map) var marker = L.marker([37.116386, -98.299591]).addTo(map); </script> </body>Básicamente, quiero reemplazar los valores del marcador con el valor que represento desde la dirección proporcionada en Django que filtraría.
{% for address in addresses %} <a>{{address.addresses}}</a> {% endfor %}Si tuviera que filtrar, digamos, el negocio asociado con la dirección, me gustaría que mostrara ese marcador para esa dirección comercial específica. Si alguien puede ayudar, sería muy apreciado.
que convertirá las direcciones en coordenadas long/lat
Creo que lo que estás describiendo es un proceso de geocodificación. Hay varias formas y servicios para geocodificar direcciones que no están vinculadas con Django o Leaflet. Algunos de ellos son de pago y otros son gratuitos, quizás con limitaciones (Google también tiene uno). Aunque hay algunos complementos de geocodificación de folletos, no estoy seguro de que puedan hacer lo que quieres. Debería encontrar una manera de llenar la barra de búsqueda del complemento con los datos de su dirección cada vez y presionar enter (¿a través de Javascript?) Con lo que no estoy familiarizado.
La forma en que iría y lo ha hecho hasta ahora en mis aplicaciones es que si tengo una base de datos que necesito para geocodificar direcciones y obtener coordenadas, lo hago como un trabajo separado antes de crear la aplicación solo para hacer mi nueva columna con coordenadas en mi base de datos
Luego, la base de datos se almacena en postgres usando la extensión postgis y la aplicación django se crea con GeoDjango.
Todo esto le permite usar datos geoespaciales en su aplicación django. Entonces es bastante fácil obtener lo que desee de su Modelo a Folleto, generalmente mediante serializadores geojson o puntos finales de API.
Esto también se puede hacer de otras maneras sin usar la base de datos y el modelo o geodjango, por ejemplo, desde un archivo csv geocodificado (que también crea de antemano) a través de la biblioteca python folium. Haces el mapa en el backend y lo pasas en una plantilla con iframes.
La mejor manera de obtener datos de Django en javascript es usar la etiqueta de plantilla json_script :
https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#json-script
Almacene los valores en algunos elementos HTML ocultos y úselos cuando se representen con Javascript. Puedes utilizar
<input type="hidden" id="long" value="your_value_here" />o
<div style="display: none;" id="long" >your_value_here</div>