Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当试图使用通过EJS传递给客户端的数据绘制多个Google地图标记/信息窗口时,initMap()不是一个函数_Javascript_Node.js_Google Maps Api 3_Ejs - Fatal编程技术网

Javascript 当试图使用通过EJS传递给客户端的数据绘制多个Google地图标记/信息窗口时,initMap()不是一个函数

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

我正试图用谷歌地图绘制出多个地图标记和信息窗口。当我添加多个标记时,我无法获得要渲染的贴图,但我可以使用中心位置使其渲染。我正在通过EJS将数据从后端的API请求传递到客户端

首先,我可以让地图加载到一个中心位置,给定用户lat/lng,该lat/lng是从后端的zipcode生成的。以下是客户端
(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),