作为一个编程新手,我已经坚持了几天了。下面的所有代码我都从这个网站和其他网站研究了这个问题,但没有成功。
我可以通过以下方式从服务器上的 json 文件成功将数据加载到 Google 地图上:
map.data.loadGeoJson('http://www.h...........com/geojson/164_surveydata.json');
map.data.setStyle({
editable: false,
draggable: false,
strokeWeight: 2,
strokeColor: '#686868',
});
然后,我可以编辑折线,将节点移动到新位置。
然后,我尝试使用面板按钮单击功能保存编辑后的地图数据图层:
function saveData() {
map.data.setStyle({
editable: false,
strokeWeight: 2,
strokeColor: '#686868',
});
map.data.toGeoJson(function(data) {
var jsonData = JSON.Stringify(data);
});
$.ajax({
method: 'POST',
url: 'http://www.h..........com/savegeojson.php',
data: {'data' : jsonData},
success: function(response){
alert( response );
},
error: function (response) {
alert('error'+ response);
}
});
}
我使用与成功将数据发布到服务器上的 SQL 数据库相同的 php 要求,因此假设我可以执行相同的操作来访问同一服务器上的文件。我的php文件如下:
<?php
require __DIR__ . "/getdb.php";
if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Can't connect to database");
if (!mysql_select_db($database))
die("Can't select database");
$json = json_decode($_POST['data'],true);
if (json_decode($json) != null) { /* sanity check */
$file = fopen('http://www.h.....com/geojson/164_surveydata.json','w+');
fwrite($file, $json);
fclose($file);
} else {
// handle error
}
?>
这个想法是将json文件加载到谷歌地图中,编辑折线等,然后将数据保存回同一个json文件。
任何帮助将不胜感激。此外,关于在哪里放置错误处理程序(?)的任何提示也将很棒。
为了简化事情,只需删除您的 json 文件并将其放入数据库中即可。使用 php 代码创建一个 json 格式字符串,其中包含每个折线的坐标。下面是折线的可编辑节点的示例。要保存折线路径,请参阅此SO问题。至于错误处理,您可以在从数据库中获取坐标时将其放在一起,用于在地图上绘制折线,最后将坐标保存在数据库中。
这样做的原因如下:
-
将其保存到 JSON 将是多余的,因为在将文件覆盖到服务器时必须考虑许多因素。简单地说,将坐标保存到数据库中。
-
您将上传到服务器的文件将减少。
-
文件依赖关系。