从最近上传的KML文件初始化谷歌地图API


Initialising Google Maps API from recently uploaded KML file

所以我正在制作一个简单的网站,最初的功能就是:

用户将KML文件上传到网站。谷歌地图API是使用这个KML文件初始化的,因此地图显示了他们最近的移动。

这听起来很简单,但我在基础知识方面遇到了一些麻烦。这或多或少是我第一次尝试web开发,所以我尝试学习HTML、CSS、AJAX、PHP、Google Maps API V3,当然还有KML文件格式。

要使用KML文件初始化Google Maps API,必须首先设置一些基本信息,例如:

function initialize() {
  var myLatlng = new google.maps.LatLng(40.65, -73.95);
  var myOptions = {
    zoom: 12,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };

这里要注意的重要一点是地图的中心位置。

除此之外,还必须指定要使用的KML文件:

var nyLayer = new google.maps.KmlLayer(
      'http://www.searcharoo.net/SearchKml/newyork.kml',
      {  suppressInfoWindows: true,
         map: map});

这些当然只是示例,而不是我将要使用的数据。

现在我的问题就是这样。这些值似乎是预先确定的和静态的。为了初始化谷歌地图API,这些值需要事先知道。但在我的情况下,在用户上传KML文件之前,这些值是未知的。

到目前为止,我有一个简单的PHP脚本来处理文件上传。我不知道如何将控制权传递给包含谷歌地图设置的JavaScript,也不知道如何编写此代码,使只有在上传文件后才知道的值用于初始化地图。

总之,我想要实现的是:

用户浏览到KML文件。用户按下"上传"按钮。文件被上传,然后立即用于初始化显示他们运动的地图。

我可能写得太多了,但我觉得写得多总比写得不够好。提前感谢你的建议。

给定您发布的代码片段,KmlLayer应该居中并缩放以显示kml文件的内容。如果它没有这样做,请提供足够的信息来重现问题(kml文件和显示它的html/js文件)。

编辑:您写道:

我需要我的php文件上传脚本来保存KML文件的名称,然后不知怎么的,我需要提取关于地图应该集中在哪里的信息,

除非你不喜欢居中的默认行为,否则你不需要这样做,并缩放地图以显示kml 的所有内容

然后调用谷歌地图API(我相信是JavaScript)用我刚刚提取的信息。这一切都需要通过一次点击上传按钮来完成。

是的。

第2版:

好吧,但是怎么做呢?我不知道该怎么办。这是我第一次尝试网络开发。我不是要求有人为我写代码,而是关于如何做这个的指针

步骤1:文档中的此示例显示了如何显示kml文件,将引用替换为"http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml',并引用要显示的kml文件。

第2步:更改php以生成在单击按钮时加载和显示它所需的html和javascript。这将取决于您希望在页面上的何处显示它,以及您希望它是在单击按钮时显示的隐藏div、新窗口还是其他内容。