我有一个包含 12 家商店的商店页面。每个商店都有一个按钮来显示其在 map 上的单独位置。问题是它不起作用(我在每张 map 上都得到相同的位置,它应该是动态的)。
我正在做的是在每个商店的 ruby block 内加载 map ( map 加载 12 次 - 向 Google API 发出 12 个请求):
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=AIzaSyBktelhtX7My2gbXhZIR8J9Lu6XXXQ1nNM">
</script>
<script type="text/javascript">
var LocationData = [
[<%= shop.latitude %>, <%= shop.longitude %>, '<%= shop.direction %>']
];
var map;
function initialize() {
var mapOptions = {
zoom: 3
};
var map = new google.maps.Map(document.getElementById('map-canvas-<%= shop.id %>'),
mapOptions);
var bounds = new google.maps.LatLngBounds();
var infowindow = new google.maps.InfoWindow();
for (var i in LocationData) {
var p = LocationData[i];
var latlng = new google.maps.LatLng(p[0], p[1]);
bounds.extend(latlng);
var image = 'assets/marcador_sushi.png';
var marker = new google.maps.Marker({
position: latlng,
icon: image,
map: map,
title: p[2]
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(this.title);
infowindow.open(map, this);
});
}
map.fitBounds(bounds);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
最佳答案
创建一个全局函数(可能在 app/assets/application.js
中),如下所示:
function addShopMap(shop_id, lat, lng, direction){
var mapOptions = {
zoom: 3
};
var map = new google.maps.Map(document.getElementById('map-canvas-'+shop_id),
mapOptions);
var bounds = new google.maps.LatLngBounds();
var infowindow = new google.maps.InfoWindow();
var latlng = new google.maps.LatLng(lat, lng);
bounds.extend(latlng);
var image = 'assets/marcador_sushi.png';
var marker = new google.maps.Marker({
position: latlng,
icon: image,
map: map,
title: direction
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(this.title);
infowindow.open(map, this);
});
map.fitBounds(bounds);
}
然后您应该在商店的每个 erb block 中调用此函数:
<script type="text/javascript">
addShopMap('<%= shop.id %>', <%= shop.latitude %>, <%= shop.longitude %>, '<%= shop.direction %>');
</script>
关于javascript - 在同一页面上的模态上使用许多动态 Google map - Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39727700/