我正在使用LocationIQ地图服务:https://locationiq.com/docs并将3个脚本加载到页面标题中(在Concrete5 CMS控制器中):
$this->addHeaderItem($html->css("https://unpkg.com/leaflet@1.5.1/dist/leaflet.css"));
$this->addHeaderItem($html->javascript("https://unpkg.com/leaflet@1.5.1/dist/leaflet.js"));
$this->addHeaderItem($html->javascript("https://tiles.unwiredmaps.com/js/leaflet-unwired.js"));
然后我在视图中设置地图:
<div class="leaflet-map" data-jq="<?php echo h($data); ?>" style="height: <?php echo $height; ?>; width: <?php echo $width; ?>;"></div>
和JS中的
$(document).ready(function(e) {
$.each($('.leaflet-map[data-jq]'), function(index, element) {
var jq_data = $.parseJSON($(element).attr('data-jq'));
InitLeafletMap(element, jq_data);
});
});
function InitLeafletMap(element, jq_data) {
var myLeafletStreets = L.tileLayer.Unwired({ // <- ERROR HERE
key: jq_data.api_key,
scheme: "streets",
});
var myLeafletMap = L.map(element, {
center: [jq_data.latitude, jq_data.longitude],
zoom: jq_data.zoom ? jq_data.zoom : 16,
scrollWheelZoom : jq_data.lock_wheel,
layers: [myLeafletStreets],
});
L.control.scale().addTo(myLeafletMap);
问题是有时没有错误发生,但是在大多数情况下,在加载页面时,我在上面显示的行上收到“ TypeError:L.tileLayer.Unwired不是函数”。
为什么会这样?
PS。我必须说,我还在页面上使用其他地图(2Gis和Yandex)-不同的脚本,不同的库。但是,如果我仅使用Leaflet映射-没有错误。如果我使用其他地图,大多数时候都会得到错误提示,但并非总是如此。时间安排有问题吗?
[更新]
看起来像这样可以解决问题:
var Leaflet = L.noConflict();