J'ai besoin d'insérer dynamiquement des données de marqueurs (nom, latitude, long) dans javascript, maps.js
.Django 1.11: Javascript dynamique pour charger les marqueurs Google Map
Dans mes maps.js, j'ai actuellement:
var locations = [
[ locationData('listings1.html','images/listing-item-01.jpg',"listing name",'Address ', '4.5', '12'), 40.94401669296697, -74.16938781738281, 1, '<i class="im im-icon"></i>'],
[ locationData('listings2.html','images/listing-item-02.jpg','Name2','Place', '5.0', '23'), 40.77055783505125, -74.26002502441406, 2, '<i class="im im-icon"></i>'],];
Et je dois être en mesure de charger cette dynamique en utilisant une boucle par exemple
{% if listings %}
var locations = [
{% for listing in listings %}
[ locationData({{ listing.url}} , {{ listing.name }} , {{ listing.place }}) ],
{% endfor %}
]
Actuellement, je dispose d'un fichier statique maps.js, que je charge à l'aide:
<script type="text/javascript" src="{% static 'scripts/maps.js' %}"></script>
Je ne peux pas insérer les balises là, parce qu'il est appelée de façon statique. Cependant, depuis maps.js
est static
, je ne peux pas charger des balises telles que {{ listing.location }} , {{ listing.lat }} , {{ listing.lng }}
etc.
j'ai essayé 2 solutions (et celle décrite dans les commentaires).
1) J'ai essayé de charger le petit
#template.html
<script>
var locations =
// python code
</script>
mais cela ne fonctionne pas, je pense que locationData
est une fonction, qui est également définie dans maps.js.
Je pourrais éventuellement inclure la totalité de maps.js
dans template.html
, mais il s'agit de 230 lignes de code.
2) J'ai essayé d'ajouter maps.js
à mon dossier users
app, comme si:
users/templates/users/maps.js
Et à l'intérieur que je js chargé des balises de modèle définis ci-dessus. Dans mon views.py j'ai fait:
def index(request):
js_file = "users/templates/users/maps.js"
return render(request, "users/template.html", context={"js_file": js_file })
#template.html
<script src="{{js_file}}"></script>
Cependant, j'obtiens l'erreur que le fichier n'a pas pu être trouvé.
J'ai essayé de faire cela, dans le modèle I défini les emplacements var, et copiez simplement le code de maps.js pour définir la variable en dehors de maps.js. Puis j'ai commenté les cartes.js var locations, mais cela ne fonctionne pas – Roma
Cette solution devrait fonctionner que j'ai résolu mes problèmes de cette manière seulement. Consultez ma réponse, https://stackoverflow.com/a/46302661/4834455 vous pourriez obtenir quelques indices de plus à ce sujet. –
Après avoir fait cela, je peux voir comment cela fonctionnerait pour seulement 1 entrée. Mais comment incorporeriez-vous une boucle dans cela? J'ai besoin du fichier maps.js pour avoir autant d'emplacements (marqueurs) que le nombre d'entrées renvoyées par mon modèle. – Roma