Javascript setLngLat()。setPopup不是函数
一旦视图渲染出现此错误,则不会添加弹出窗口- mapbox gl.js:176 TypeError:(中间值).setLngLat(…).setPopup不是函数(…) 有人面对这个问题或知道如何解决这个问题吗 代码是设置弹出标记,我已经按照这个链接Javascript setLngLat()。setPopup不是函数,javascript,ember.js,mapbox,mapbox-gl-js,mapbox-marker,Javascript,Ember.js,Mapbox,Mapbox Gl Js,Mapbox Marker,一旦视图渲染出现此错误,则不会添加弹出窗口- mapbox gl.js:176 TypeError:(中间值).setLngLat(…).setPopup不是函数(…) 有人面对这个问题或知道如何解决这个问题吗 代码是设置弹出标记,我已经按照这个链接 let-tpl; if(vendor.get('cachedAverageRating')){ 第三方物流=` ${vendor.get('cachedAverageRating')} `; }否则{ 第三方物流=` `; } 让markerCon
let-tpl;
if(vendor.get('cachedAverageRating')){
第三方物流=`
${vendor.get('cachedAverageRating')}
`;
}否则{
第三方物流=`
`;
}
让markerContainer=document.createElement('div');
markerContainer.innerHTML=tpl;
//创建弹出窗口
让markerPopup=newmapboxgl.Popup({offset:25})
.setHTML(`Name:${vendor.get('Name')},地址:${vendor.get('Address')},评级:${vendor.get('cachedAverageRating')});
//创建标记
新的MapboxGL.Marker(markerContainer,{offset:[-25,-25]})
.setLngLat([get(供应商,'lon'),get(供应商,'lat')]))
.setPopup(markerPopup)//在此标记上设置一个弹出窗口
.addTo(地图);
您使用的是MapboxGL
而不是MapboxGL
,代码区分大小写
您的供应商变量中可能也有错误,但我们无法在上面的答案中看到如何定义它。如果您能提供更多信息,我们可能会进一步提供帮助。目前:这段代码有效:
mapboxgl.accessToken = '<your access token here>';
var monument = [-77.0353, 38.8895];
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/light-v9',
center: monument,
zoom: 15
});
let tpl;
tpl = "text";
let markerContainer = document.createElement('div');
markerContainer.innerHTML = tpl;
// create the popup
let markerPopup = new mapboxgl.Popup({offset: 25})
.setHTML("test");
// create the marker
new mapboxgl.Marker(markerContainer, {offset:[-25, -25]})
.setLngLat(monument)
.setPopup(markerPopup) // sets a popup on this marker
.addTo(map);
mapboxgl.accessToken='';
var纪念碑=[-77.0353,38.8895];
var map=new mapboxgl.map({
容器:“映射”,
风格:'mapbox://styles/mapbox/light-v9',
中心:纪念碑,
缩放:15
});
让第三方物流;
tpl=“text”;
让markerContainer=document.createElement('div');
markerContainer.innerHTML=tpl;
//创建弹出窗口
让markerPopup=newmapboxgl.Popup({offset:25})
.setHTML(“测试”);
//创建标记
新的mapboxgl.Marker(markerContainer,{offset:[-25,-25]})
setLngLat先生(纪念碑)
.setPopup(markerPopup)//在此标记上设置一个弹出窗口
.addTo(地图);
您可以直接从错误消息中进行调试。显然,setLngLat()
返回的不是标记的东西,因此它没有定义setPopup()
它为什么这样做?因为您将错误的内容传递给了setLngLat()
。您应该传递一个LngLat
对象(已定义)
我不确定您想用get()
函数做什么,但它显然没有按要求返回数字 MapboxGL是正确的。在我的例子中,我已经初始化了var MapboxGL=window.MapboxGL;然后使用MapboxGL。您想给我们更多关于“供应商”变量的信息吗?我将传递正确的lat lat值。我们可以通过(lat,lon)以单个参数或两个参数传递数组
mapboxgl.accessToken = '<your access token here>';
var monument = [-77.0353, 38.8895];
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/light-v9',
center: monument,
zoom: 15
});
let tpl;
tpl = "text";
let markerContainer = document.createElement('div');
markerContainer.innerHTML = tpl;
// create the popup
let markerPopup = new mapboxgl.Popup({offset: 25})
.setHTML("test");
// create the marker
new mapboxgl.Marker(markerContainer, {offset:[-25, -25]})
.setLngLat(monument)
.setPopup(markerPopup) // sets a popup on this marker
.addTo(map);