【发布时间】:2020-11-16 21:40:00
【问题描述】:
我对 rails + webpacker 还是很陌生,我正在尝试在地图上显示一个标记。它适用于多个标记,但是当只有一个时,它会显示海洋的中间。当我刷新时,它运行良好。我使用的是 Rails 6。
这是插件:
import GMaps from 'gmaps/gmaps.js';
const initMap = () => {
document.addEventListener("turbolinks:load", function() {
const initMap = document.getElementById('map');
if (initMap) { // don't try to build a map if there's no div#map to inject in
const map = new GMaps({ el: '#map', lat: 0 , lng: 0 });
const markers = JSON.parse(initMap.dataset.markers);
map.addMarkers(markers);
if (markers.length === 0) {
map.setZoom(2);
} else if (markers.length === 1) {
map.setCenter(markers[0].lat, markers[0].lng);
map.setZoom(12);
} else {
map.fitLatLngBounds(markers);
}
};
});
}
export { initMap };
这里是application.js
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
// External imports
import { initMap } from '../plugins/init_map';
import { initAutocomplete } from '../plugins/init_autocomplete';
import "bootstrap";
import flatpickr from "flatpickr";
initMap();
document.addEventListener('turbolinks:load', () => {
initAutocomplete();
flatpickr("#booking_start_time", {
enableTime: true,
dateFormat: "Y-m-d H:i",
});
flatpickr("#booking_end_time", {
enableTime: true,
dateFormat: "Y-m-d H:i",
});
});
谢谢!
【问题讨论】:
-
您是否尝试将
initMap()移动到turbolinks:load回调中?
标签: javascript ruby-on-rails google-maps webpacker