javascript - google.maps 在 Django 中未定义
问题描述
我有下一个代码:
{% extends "block.html" %}
{% load media_tags staticfiles %}
{% block blocktitle %}{% endblock %}
{% block blockbody %}
{% addmedia "css" %}
<link href="{% static "merengue/css/map/map.css" %}" rel="stylesheet" type="text/css" />
{% endaddmedia %}
<script src="//maps.googleapis.com/maps/api/js" type="text/javascript"></script>
<style type="text/css"> html, body, #map { height: 100%; margin: 0; }</style>
<script type="text/javascript">
var blocked_maps;
var setup_blocked_maps;
var map;
var script = document.createElement('script');
script.src = 'https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyBwdVf-Ezph3llEXy-cK0HnTLLfGEx3p-Q&libraries=places';
//script.defer = true;
if (! blocked_maps) {
blocked_maps={}
}
blocked_maps["#mapblock_{{ reg_block.id }}"]={
use_cluster: false,
show_directions: false,
{% if render_ui %}
use_small_controls: true
{% else %}
no_ui: true
{% endif %}
};
function initialize() {
var map = new google.maps.Map(
document.getElementById('map'), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
position: new google.maps.LatLng(37.4419, -122.1419),
map: map
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="mapblock_{{ reg_block.id }}" style="width: {{ width }}px; height: {{ height }}px;">
<div class="mapParameters hide">
<span class="zoom">{{ zoom }}</span>
<span class="longitude">{{ longitude|safe }}</span>
<span class="latitude">{{ latitude|safe }}</span>
<span class="markersShownInitially">1</span>
</div>
<div class="mapPoint hide">
<span class="longitude">{{ longitude|safe }}</span>
<span class="latitude">{{ latitude|safe }}</span>
<span class="iconImage">{% static "merengue/img/map/default_map_icon.png" %}</span>
</div>
</div>
{% endblock %}
如果我运行此代码,请给出错误:您已在此页面上多次包含 Google Maps JavaScript API。这可能会导致意外错误。
所以我评论了这一行:
然后我有错误:无法读取行中未定义的属性'Map' var map = new google.maps.Map(...)
问题是 google.maps 没有定义,我不知道如何解决这个问题。
解决方案
您有多个script
元素加载地图脚本,因此出现错误。将您的代码更新为:
{% extends "block.html" %}
{% load media_tags staticfiles %}
{% block blocktitle %}{% endblock %}
{% block blockbody %}
{% addmedia "css" %}
<link href="{% static "merengue/css/map/map.css" %}" rel="stylesheet" type="text/css" />
{% endaddmedia %}
<script src="https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyBwdVf-Ezph3llEXy-cK0HnTLLfGEx3p-Q&libraries=places" type="text/javascript"></script>
<style type="text/css"> html, body, #map { height: 100%; margin: 0; }</style>
<script type="text/javascript">
var blocked_maps;
var setup_blocked_maps;
var map;
if (! blocked_maps) {
blocked_maps={}
}
blocked_maps["#mapblock_{{ reg_block.id }}"]={
use_cluster: false,
show_directions: false,
{% if render_ui %}
use_small_controls: true
{% else %}
no_ui: true
{% endif %}
};
function initialize() {
var map = new google.maps.Map(
document.getElementById('map'), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
position: new google.maps.LatLng(37.4419, -122.1419),
map: map
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="mapblock_{{ reg_block.id }}" style="width: {{ width }}px; height: {{ height }}px;">
<div class="mapParameters hide">
<span class="zoom">{{ zoom }}</span>
<span class="longitude">{{ longitude|safe }}</span>
<span class="latitude">{{ latitude|safe }}</span>
<span class="markersShownInitially">1</span>
</div>
<div class="mapPoint hide">
<span class="longitude">{{ longitude|safe }}</span>
<span class="latitude">{{ latitude|safe }}</span>
<span class="iconImage">{% static "merengue/img/map/default_map_icon.png" %}</span>
</div>
</div>
{% endblock %}
推荐阅读
- sql - 将 2 行合并为 1 行(开始和结束时间)
- java - 如何从 Ldap 中的给定组中提取所有成员的电子邮件地址
- vue.js - 如何获取嵌入在el-table中的el-rate元素的所有值
- dataframe - 具有复杂数据结构的 Hive 列在读取镶木地板数据后给出空值
- swift - 解码/编码具有协议类型属性的结构
- java - 错误:属性值 = 类的“属性值必须是常量”
- c# - 如何将 UTF-8 txt 文件转换为 ANSI txt 文件并且文件内容没有显示文件被乱码
- javascript - 用于检查“访问您的位置”的 Javascript 是否“暂时被阻止”
- html - iOS Safari 在播放前下载整个 MP4 视频?
- python - 违反 UniqueConstraint /w SqlAlchemy 将 pd.DataFrame 摄取到 SQL 数据库的最佳方法