首先,您是一个完全没有编程经验的新手。如果我没有使用正确的术语,我深表歉意。
背景:我参加了一个教育工作者的课程,该课程旨在教我们如何教授高中计算机科学课程。该课程应该是为零编程知识的教师设计的。我们没有收到任何编码说明。
我们的任务是一起使用EXIF.js和Mapbox创建一个HTML文档,该文档将在地图上的GPS坐标处显示一组图像(图标((想象一下埃菲尔铁塔的小照片显示在地图上它所在的确切坐标处(。我们将使用EXIF.js从EXIF数据中提取GPS坐标。然后,这些坐标应该自动插入代码中,以将图标放置在地图上的正确位置。
我所要处理的只是Mapbox网站上的样本和EXIF.js文档。
通过使用以下示例中的代码,我已经能够做出一些接近教授所寻找的最终结果的东西。它看起来是正确的。然而,这只是任务的一部分。我没有从照片中提取GPS坐标并插入代码,而是手动输入坐标。
我有应该提取坐标的代码。但我似乎错过了将坐标与图标/图像连接起来的代码。
示例:https://docs.mapbox.com/mapbox-gl-js/example/add-image/
有人能告诉我在哪里寻求指导或如何解决这个问题吗?我完全迷路了。TIA-
根据GeoJSON格式RFC 7946第3.1.1节:
位置是一个数字数组。必须有两个或两个以上元素。前两个元素是经度和纬度,或者东距和北距,正是按照这个顺序,并使用十进制数字
所以看看猫图标的例子,它被绘制的位置分别是[0.0,0.0]经度和纬度。
在您的示例中,执行此操作的代码如下:
{
'type': 'Feature',
'geometry': {
'type': 'Point',
'coordinates': [0, 0]
}
通过更详细的示例,您可以看到对map.loadImage(..(的调用有两个参数,第一个是您希望加载的图像的URL,第二个是从图像的原始位置加载图像并可供您使用后调用的函数。
在该函数中,您可以看到对map.addImage(..(的调用,该调用获取现在加载的图像数据并将其与名称关联;这里是";猫";。
然后它调用map.addSource(..(,它接受一个GeoJSON格式的对象和一个与该源关联的名称。这个名字被赋予了";点";。
最后,它调用map.addLayer(..(,为地图添加一个层。你可以认为这有点像在地图顶部放置一个旧投影仪上的"透明度"。在这里的例子中,除了猫的图像之外,图层是透明的,下面的地图的其余部分都显示出来。
这个层是根据我们刚刚在上面处理的项目来指定的:
map.addLayer({
'id': 'points',
'type': 'symbol',
'source': 'point',
'layout': {
'icon-image': 'cat',
'icon-size': 0.25
}
});
该层被赋予一个唯一的id("点"(,并被赋予"源",以告诉它将该层相对于地图放置在哪里。该示例将源命名为";点";,但是您应该替换之前调用map.addSource(..(时使用的名称。最后,该层的布局被指定为一个图标,由map.addImage(..(调用中给定的名称标识,该调用被赋予加载图像的数据。给它起的名字是";cat";,这就是这里出现的。
因此,总之,将图像与您从照片EXIF数据中检索的坐标相关联的代码应该在该示例中,尽管可能不是您期望的顺序和形式。
祝你的作业好运。