2

我的目标是让用户绘制路线,以便他们可以将其提交到网站。

在下面的 jsfiddle 中,用户可以绘制路线并在完成后双击。双击会弹出一个 Google 表单,其中包含预先填充了 KML 坐标的“位置”字段。用户可以提交它,一旦获得批准,它就会进入一个 Fusion Table 以便于显示。

这是jsfiddle。和代码:

      //here is the variable with properly formatted KML 
  geolines=escape("<LineString><coordinates>")+poly.getPath().getArray().toString().replace(/([\s]+)/g, '')+escape("</coordinates></LineString>") ;

  //infowindow that should display a form with Location field pre-populated with geolines variable for easy submission.
infowindowv2 = new google.maps.InfoWindow({
        content: '<iframe width=600 height=300 scrolling=yes frameborder=no seamless src=https://docs.google.com/spreadsheet/embeddedform?formkey=dDN6WEJTMlNHT2VNMlZBOW1MZmI1Wnc6MQ&entry_0=Test1&entry_1='+ geolines +'&entry_2=test3%22 seamless></iframe>'
});

问题是,如果缩小并绘制更复杂的路线,KML 很快就会变得太大,我会收到以下错误:“ 413。这是一个错误。您的客户发出了一个太大的请求。这就是我们所知道的. " 看这里.

现在我对如何解决它感到震惊。

我喜欢地图/表格/融合表一起工作的方式,我想保留这种组合,但我不确定如何。

任何线索、想法、建议将不胜感激。谢谢你的关注。

4

1 回答 1

1

该错误与作为 URL 查询字符串的一部分传递数据有关(限制为大约 2000 个字符:不同浏览器中 URL 的最大长度是多少?)。您需要将此信息作为表单发布的一部分传递,并将所有数据作为表单元素传递(即您的地理数据成为您发布到 URL 的表单“字段”)。没有办法像这样传递任意冗长的 URL。

编辑修复了我原来的帖子以使其有意义。

更新这篇文章似乎很相关,这只是将数据获取到 iframe 的问题:从窗口将值传递给 iframe

或者这个:在 iframe 和父级之间传递 jquery 变量

基本上,从主窗口操作框架元素 - 我认为这应该适用于您的情况。如果你让它工作,你应该发布结果 jsfiddle - 整洁的工具。

于 2013-01-18T22:09:31.760 回答