此外,是否有将KML转换为数据不易从中获取的格式的替代方法。我的KML文件具有三维多边形。
我了解“一切可见的东西都可以被下载或以某种方式提取”的概念。
根据您的项目,我有4个答案或0个答案。
使用Google Maps Api for Business(每年约10,000美元),您可以生成客户端ID并使用它来保护Fusion Table(可以在Google Drive中创建),然后导入您的KML,并使用Google Maps Api显示。这将是完美的解决方案,但是如果没有Google Maps Api for Business,则无法保护您的Fusion Table,因此任何人都可以在Google Drive中访问它,并查看和复制粘贴多边形的Kml表示。
使用Google Maps Engine (/ Lite),您也可以将您的Kml导入到Google中(如果您使用Lite,则首先需要导入到Google“我的地图”,然后从Google Maps Engine Lite中导入)。我不知道非Lite的价格。 Google Maps Engine地图可以共享,因此只能查看,在此仅查看版本中,我没有找到下载或查看原始kml数据的方法,这就是我们想要的。听起来很好,但是Maps Engine Lite限制了3个图层,并且我没有找到一次将所有多边形(在我的情况下为区域)导入到一个图层中的方法。似乎我只能逐个导入它们(成功将10个多边形总共353个点导入到一个图层中)。每个导入都会生成一个图层,不能将内容从一个图层移动到另一个图层,并且由于某些原因,有些多边形似乎无法导入。编辑:
我可以导入所有多边形,其中一个多边形(由于我的多边形的算法简化)出现了交集(线交叉),只要我修复了那部分,导入就不会再抛出任何错误,但是我现在看到只能使用包含传奇的iframe嵌入该地图,因此这个解决方案对我来说无济于事。
使用Google地图服务器的白名单,仅将KML限制为Google服务器访问。问题:无法在线找到这样的列表...必须首先以某种方式收集。
你的问题基于计算机安全中已知的一种谬论,即“通过深奥性来保证安全”。这个谬论是这样的。你说你不想让它“容易”被下载。你可以让它变得困难,但只要有一个人找到了方法,他们就会编写脚本自动化下载,然后它就变得“容易”了。你的问题没有答案,因为这是不可能的。你提供的任何内容都是可盗版的,任何数据都是可重构的。
您可以检查$_SERVER["HTTP_USER_AGENT"]
变量,如果是来自Google,则从PHP生成KML。
$agent = "Kml-Google";
$google = strpos($_SERVER["HTTP_USER_AGENT"], $agent);
($google !== FALSE) or die;
header('Content-Type: application/vnd.google-earth.kml+xml kml');
header('Content-Disposition: attachment; filename="otras.kml"');
?>
<?xml version="1.0" encoding="UTF-8"?>
<kml xml ...