0

我有一个 SQLite 数据库,其中包含坐标和平铺的地图数据/图像,可用于计算Google Earth 插件的 KMZ/KML 中GroundOverlay的相应LatLonBox元素。我可以进行必要的查询来确定插件上的哪些图像(也就是我可以正确创建GroundOverlay边界)。

问题:这只是一个示例用例,我实际上并不打算使用 OSM 地图图块 - 假设我下载了这张图片:
OSM 地图图块 http://otile1.mqcdn.com/tiles/1.0.0/osm /7/41/79.png

来自 -> http://otile1.mqcdn.com/tiles/1.0.0/osm/7/41/79.png

并将其放入 sqlite 数据库。

假设我然后计算了该图像的LatLonBox并通过 javascript 创建了一个 kml 文件:

var groundOverlay = ge.createGroundOverlay('');
groundOverlay.setIcon(ge.createIcon(''))
groundOverlay.getIcon().setHref("http://otile1.mqcdn.com/tiles/1.0.0/osm/7/41/79.png");
groundOverlay.setLatLonBox(ge.createLatLonBox(''));

var center = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
var north = -38.822591;
var south = -40.979898;
var east = -61.875;
var west = -64.6875;
var rotation = 0;
var latLonBox = groundOverlay.getLatLonBox();
latLonBox.setBox(north, south, east, west, rotation);

ge.getFeatures().appendChild(groundOverlay);

示例 KML 文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <GroundOverlay>
    <name> 00</name>
    <Icon>
      <href>http://otile1.mqcdn.com/tiles/1.0.0/osm/7/41/79.png</href>
      <drawOrder>0</drawOrder>
    </Icon>
    <LatLonBox>
      <north>-38.822591</north>
      <south>-40.979898</south>
      <east>-61.875</east>
      <west>-64.6875</west>
      <rotation>0.0</rotation>
    </LatLonBox>
  </GroundOverlay>
</kml>

除了指向http://otile1.mqcdn.com/tiles/1.0.0/osm/7/41/79.png的href元素之外,我希望它指向我数据库中的图像。它不必直接指向数据库中的图像,我可以使用 javascript 来获取感兴趣的特定图像,但是一旦我有了图像数据,我就会迷失方向。

因此,我可以通过 javascript/html5 在我的本地文件系统上访问带有感兴趣图像的 sqlite 数据库,并解析一个几乎完整的 KML 文件(缺少 href 元素,因为我不知道如何获取正确的 href 元素)。

一旦我到了这一点,我不知道该去哪里。我将如何在谷歌地球插件上显示该图像,或者甚至可以不将其托管在服务器上?是否可以使用 javascript 来提供这些图像(也可以像浏览器中的服务器一样将数据库中的图像链接到可以在 kml 文档中引用的特定 href)?

这里答案的第三个元素 让我认为它可能是可能的,但由于它没有被尝试过,它的目的是提供一个 KML 文件而不是 KML 文件中的 href 元素,我不知道它是否甚至适用.

这可以单独使用javascript完成还是必须以某种方式/某处托管图像?

4

1 回答 1

1
"Can this be done solely with javascript or must the images be hosted..."

是的,它们必须在本地或远程托管,如果不是,您如何为它们提供服务?

Kml<href>元素必须包含指向可通过 HTTP 或 HTTPS 访问的本地或远程文件的链接。

"Is it possible to use javascript to serve up those images"

不,JavaScript 是一种客户端语言——它无法访问网络层或本地文件系统——它不能“提供”任何东西。

您总是可以只设置一个本地服务器来执行此操作,例如 Windows 带有内置的 IIS。

可以让<href>元素通过 http 指向本地文件,例如http://localhost/whatever.kml,https://127.0.0.1/images/foo.jpg等。

于 2013-06-19T10:48:40.067 回答