Javascript 当试图使用通过EJS传递给客户端的数据绘制多个Google地图标记/信息窗口时,initMap()不是一个函数
我正试图用谷歌地图绘制出多个地图标记和信息窗口。当我添加多个标记时,我无法获得要渲染的贴图,但我可以使用中心位置使其渲染。我正在通过EJS将数据从后端的API请求传递到客户端 首先,我可以让地图加载到一个中心位置,给定用户lat/lng,该lat/lng是从后端的zipcode生成的。以下是客户端Javascript 当试图使用通过EJS传递给客户端的数据绘制多个Google地图标记/信息窗口时,initMap()不是一个函数,javascript,node.js,google-maps-api-3,ejs,Javascript,Node.js,Google Maps Api 3,Ejs,我正试图用谷歌地图绘制出多个地图标记和信息窗口。当我添加多个标记时,我无法获得要渲染的贴图,但我可以使用中心位置使其渲染。我正在通过EJS将数据从后端的API请求传递到客户端 首先,我可以让地图加载到一个中心位置,给定用户lat/lng,该lat/lng是从后端的zipcode生成的。以下是客户端(search.ejs)文件中的代码: <script> var map; function initMap() { map = new google.ma
(search.ejs)
文件中的代码:
<script>
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: { lat: <%= userLat %>, lng: <%= userLng %> },
zoom: 10
});
}
</script>
这是我的footer.ejs
文件,您可以看到我在哪里加载Google Maps API脚本:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="/public/js/frontend.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyD_tYpqkFMkUc1mq2pzsBGySr6IeQkFhBA&callback=initMap" async defer>
</script>
意外标识符(index):36
让我很不舒服,因为我只能认为它指的是index.ejs
,但第36行与此无关,所以我认为我对这意味着什么是错的。您的问题可能是因为您的输入错误:
position: new google.mapsLatLng(venueLocations[i].location.lat, venueLocations[i].location.lng),
这应该是:
position: new google.maps.LatLng(venueLocations[i].location.lat, venueLocations[i].location.lng),
如果您在浏览器中查看页面源代码,
center:{lat:,lng:},
这是用户输入的邮政编码的纬度和经度,该邮政编码使用EJS从后端传入。因此,userLng和userLat被用来给出GoogleMaps脚本的中心位置坐标。可视化:var userLng=-28.555;var userLat=28.999;因此,这两个值是实际呈现给客户端的值。能够看到完整呈现的HTML+Js肯定会有帮助整个索引页只是一个DIV,然后这个映射脚本将映射呈现到该DIV中。没有外部Js文件处理映射脚本。我必须在页面内联加载脚本,以便使用EJS标记从后端将数据传递到脚本中。我可以共享后端服务器代码,但这是在处理我的数据并按预期将其传递给客户端。当这个谷歌地图脚本试图渲染时,我的问题发生在客户端。天哪。。我得焦急地等到今晚,看看是不是这样。从昨晚开始我就一直被这个问题困扰着。仍然会出现同样的错误,尽管这个打字错误肯定是个问题。
position: new google.mapsLatLng(venueLocations[i].location.lat, venueLocations[i].location.lng),
position: new google.maps.LatLng(venueLocations[i].location.lat, venueLocations[i].location.lng),