Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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 传单:图层控制教程中的自定义图像?_Javascript_Maps_Leaflet - Fatal编程技术网

Javascript 传单:图层控制教程中的自定义图像?

Javascript 传单:图层控制教程中的自定义图像?,javascript,maps,leaflet,Javascript,Maps,Leaflet,我已经学习了有关如何创建图层控件和自定义标记的手册教程: 标记:http://leafletjs.com/examples/custom-icons.html 控制: 我使用的控制代码,我想添加我的自定义标记到这个。当应用代码时,地图将变为空白并中断。我不确定这是否和“添加到地图”和“bindpopup”的定位有关。任何帮助都会很好 代码: [此处为CloudMake API密钥和信息] var officeIcon=L.icon({ iconUrl:'images/office1.png'

我已经学习了有关如何创建图层控件和自定义标记的手册教程:

标记:http://leafletjs.com/examples/custom-icons.html 控制:

我使用的控制代码,我想添加我的自定义标记到这个。当应用代码时,地图将变为空白并中断。我不确定这是否和“添加到地图”和“bindpopup”的定位有关。任何帮助都会很好

代码:

[此处为CloudMake API密钥和信息]
var officeIcon=L.icon({
iconUrl:'images/office1.png'
});
var london=L.marker([51.3512542357518,-0.461769104003906],{icon:officeIcon}).addTo(map.bindpoop('Office Address');
var cities=L.layerGroup([伦敦]);
var minimal=L.tileLayer(cloudmadeUrl,{styleId:22677}),
午夜=L.tileLayer(cloudmadeUrl,{styleId:999}),
高速公路=L.tileLayer(cloudmadeUrl,{styleId:46561});
var map=L.map('map'{
中心:新L.LatLng(54.980000,-1.5975022315979004),
缩放:10,
图层:[最小、高速公路、城市]
});
变量基本映射={
“最小”:最小,
“夜景”:午夜,
};
var overlayMaps={
“高速公路”:高速公路,
“显示标记”:城市
};
addControl(新的MyControl());
L.控制。图层(底图、覆盖图)。添加到(地图);

问题在于,在定义地图之前,您正在向地图添加标记。我建议在firefox中使用firebug或chrome中的同等版本。这样,您可以查看控制台并看到错误:

'Uncaught TypeError: Cannot call method 'addLayer' of undefined'
  L.Marker.L.Class.extend.addTo leaflet-src.js:2993
  addVehicleContentUI obelix.dev:1074
  (anonymous function) obelix.dev:718
  (anonymous function) obelix.dev:1292
  p.event.dispatch jquery-1.8.0.min.js:2
  g.handle.h
这把我指向了L.标记,这让我意识到你还没有定义地图。您遇到的问题是将标记添加到地图以及将其添加到组图层。只是不要将其添加到地图中(根据您之前的教程)。因此,请删除代码:

.addTo(map)
发件人:

根据您的代码片段,我假定您拥有CloudMake的密钥。如果是这样的话,它应该可以正常工作。我在当地测试过,一切都很好

如果你使用firefox,我强烈建议你使用firebug;如果你使用chrome,我强烈建议你使用chrome的equiv。查看控制台将向您展示这些问题,您甚至可以设置断点,并在javascript执行时逐步检查它。一个宝贵的javascript编程工具


干杯。

谢谢你的评论,一旦我用你的建议纠正了这些错误,我会让你知道我是如何开始的-ThanksHow你去巴尔博亚了吗,它解决了你的问题了吗?我应该注意到,传单中的示例的一个大问题是,您必须从CloudMake获得一把钥匙。然而,我从您在代码段第一行的评论中推测,您已经意识到了这一点。我刚刚实现了这些更改,这非常有效。谢谢你的帮助!是的,我在地图上有CloudMake API密钥、URL和属性。我开发的目的是在地图上创建3个标记,并使用3个链接创建一个控件,当您单击链接时,它会将您带到lat long位置。终于克服了第一个障碍:)这是一个愚蠢的问题,但我举的例子是一个标记。我已经编辑了我的代码,下面是一个我会为多个标记做的示例,但是仍然不起作用,这是正确的方法吗?嗨,Balboa,如果你有不同的问题,最好打开一个新问题。否则这就变成了一场对话。如果你发布了一个新问题,我会帮你看一看(有一个选项可以说明你认为可能知道答案的用户)
.addTo(map)
var london = L.marker([51.3512542357518,-0.461769104003906],{icon: officeIcon}).addTo(map).bindPopup('<b>Office Address</b>');
map.addControl(new MyControl());