如何在我的数据库中保存纬度和经度信息。使用leaflet地图。

3
我正在开发一个应用程序,使用leaflet地图和mongoDB作为我的数据库。我希望用户能够在地图上点击一个地点,编辑标记的详细信息,然后将这些地点保存在我的数据库中。我该怎么做?我是相对新手,必须为我的毕业论文做到这一点,我没有以前处理数据库和JavaScript的经验。 我已经使用mongoose设置了我的数据库。
我在stackoverflow上搜索类似的问题,但我找不到任何新的内容,如果我只是错过了,请引导我到那里。
谢谢!

您遇到了哪个具体的步骤问题呢?是从标记中读取纬度/经度?还是将来自UI(浏览器、Electron等)的数据传递给能够连接到数据库的代码(Node.js、Electron后端等)?或者您的问题是如何将收到的数据传递到数据库?您需要更加具体地说明您在这个过程的哪个具体部分有问题,因为每个部分都是一个独立的主题。 - t.niese
是的,抱歉,我在将数据传递到数据库时遇到了问题。Leaflet允许您在地图上单击,并弹出带有纬度/经度的弹出窗口,因此您可以编辑弹出窗口中的内容,然后我不知道如何将纬度/经度和编辑后的信息保存到数据库中的标记上。 - tokaskol
1个回答

0
将数据保存到数据库中。
// 1. make a mongoose model
const schema = new mongoose.Schema({
  name: {
    type: String,
    default: "Placeholder Location Name"
  },
  coordinates: {
    type: [Number],
    default: [0, 0]
  }
});
const Location = mongoose.model('Location', schema);

// 2. example of making a Location
const exampleLocation = new Location({
  name: "My First Location",
  coordinates: [41.40338, 2.17403] // This is where your example coordinates go.
})

exampleLocation.save((err) => {
  if (err) console.log("An error occured while trying to save: " + err)
  else console.log("Success") // the object is saved
})

捕获地图上的点击

let map = document.getElementById('your-leaflet-map-id')

map.addEventListener('click', (event) => {
  console.log('The clicked coordinates were: ' + event.latlng.lat + ',' + event.latlng.lng)
  // feel free to use these coordinates as you wish
  yourMethodToSaveLocation(event.latlng.lat, event.latlng.lng)
})

我不确定代码和地图上某人点击位置之间的联系。例如,我在我的数据库中创建了一个用户集合,如果我去按“添加用户”按钮,那么用户就会被添加,我理解代码和应用程序之间的关系,因为我创建了所有这些内容。但现在我无法理解我没有创建的东西(如地图和我在其上单击的任何内容)与保存到数据库的代码之间的关系。对不起我的英语可能有点糟糕,希望你能理解。 - tokaskol
最好阅读由创建您正在使用的技术的开发人员制作的文档。您需要通过创建事件侦听器来捕获地图上的点击事件。如在leaflet地图文档中所述,地图组件将向事件对象提供适当的信息:https://leafletjs.com/reference-1.6.0.html#mouseevent-latlng我已经添加了一个捕获点击位置数据的示例。 - Kaiju

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接