Ash*_*ina 3 javascript arrays google-maps google-maps-api-3 node.js
学习自己制作一个网站。我之前在使用单个对象时遇到过这个问题,但我能够使其工作并在客户端拾取该对象并使用它。但是,现在我尝试将位置数组发送到客户端,以便将它们作为标记呈现在 google 地图 api 上(它们将 placeID 存储在 JSON 中)。根据我读过的线程,无法像对象一样发送数组,但我遵循了其他人的建议,但无济于事。我有一些测试位置,我已经制作了一个数组,但是当我尝试在客户端拾取它时,我只是得到“SyntaxError:missing:after property id”和“ReferenceError:cityList is not Defined”,这使得感知 cityList 是否有问题。
服务器:
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res) {
var yourCities = ["stockholm", "moscow", "barcelona", "bordeaux", "helsinki", "london"];
var cityList = yourCities.reduce(function(cityList, city) {
cityList.push(require('../public/cityData/' + city))
return cityList;
}, [])
//TODO::need to update this to send an array
res.render('map', {
cityList : JSON.stringify(cityList),
});
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
尝试获取 cityList 客户端并将其制作为标记,标记代码基本上是直接从 Google 的 API 指南复制的。
<script>
var cityList = <%- cityList %>;
</script>
<script>
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 41.9028, lng: 12.4964},
zoom: 3
});
var infowindow = new google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(map);
for(i = 0; i < cityList.length; ++i)
{
service.getDetails({
placeId: cityList[i].placeID
}, function(place, status) {
if (status === google.maps.places.PlacesServiceStatus.OK) {
var marker = new google.maps.Marker({
map: map,
position: place.geometry.location
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent('<div><strong>' + place.name + '</strong><br>' +
'Place ID: ' + place.place_id + '<br>' +
place.formatted_address + '</div>');
infowindow.open(map, this);
});
}
});
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
显然,我稍后会将标记放置到循环中,但现在我只是尝试获取第一个元素进行测试。
编辑::这里的代码现在适用于未来的用户
看来您将数据发送到ejs模板的方式是正确的,并且应该可以正常工作,请确保记录第一项,cityList如下所示:
var cityList = <%= cityList %>
console.log(cityList[0])Run Code Online (Sandbox Code Playgroud)
更新:
server
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res) {
var yourCities = ["stockholm", "moscow", "barcelona", "bordeaux", "helsinki", "london"];
var cityList = yourCities.reduce(function(cityList, city) {
cityList.push(require('../public/cityData/' + city))
return cityList;
}, [])
//TODO::need to update this to send an array
res.render('map', {
cityList : JSON.stringify(cityList),
});
});
module.exports = router;Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17409 次 |
| 最近记录: |