Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript setLngLat()。setPopup不是函数_Javascript_Ember.js_Mapbox_Mapbox Gl Js_Mapbox Marker - Fatal编程技术网

Javascript 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

一旦视图渲染出现此错误,则不会添加弹出窗口-

mapbox gl.js:176 TypeError:(中间值).setLngLat(…).setPopup不是函数(…)

有人面对这个问题或知道如何解决这个问题吗

代码是设置弹出标记,我已经按照这个链接

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);