2017-09-12 21 views
0

我有一个脚本来查看谷歌地图上的多边形,但是当我单击超链接时,我想更改我的多边形坐标。这我使用的脚本:如何用超链接替换我的JavaScript文件中的数据到此文件

<!DOCTYPE html> 
<html> 
    <head> 
    <script src="https://maps.googleapis.com/maps/api/js?key=MY_API_KEY_IS_HERE&libraries=geometry,places&ext=.js" ></script> 
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 
    <div id="map_canvas" ></div> 
    <style> 
      /* Always set the map height explicitly to define the size of the div 
      * element that contains the map. */ 
      #map_canvas { 
       height: 100%; 
      } 
      /* Optional: Makes the sample page fill the window. */ 
      html, body { 
       height: 100%; 
       margin: 0; 
       padding: 0; 
      } 
      </style> 
    </head> 
    <body> 
    <script> 
     var map; 
     var bounds = new google.maps.LatLngBounds(); 

     // your POLYGON 
     var polygonStr = "POLYGON (24.935955 42.32732, 24.943297 42.3268, 24.944593 42.322991, 24.94438 42.317172, 24.940584 42.317919, 24.936224 42.320232, 24.933244 42.322896, 24.927394 42.327057, 24.934312 42.328296, 24.93242 42.326795)"; 


     function initialize() { 
      map = new google.maps.Map(
      document.getElementById("map_canvas"), { 
       center: new google.maps.LatLng(42.156801, 24.749468), 
       zoom: 4, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
      }); 
      drawPoly(polygonStr); 
      map.fitBounds(bounds); 
     } 

     function drawPoly(multipolygonWKT) { 
      var polylines = []; 
      var toReturn = []; 
      multipolygonWKT = multipolygonWKT.replace("POLYGON ", ""); 
      var formattedValues = multipolygonWKT.replace("))", ""); 
      formattedValues = formattedValues.replace("((", ""); 

      var linesCoords = formattedValues.split("), ("); 

      for (i = 0; i < linesCoords.length; i++) { 
       polylines[i] = []; 
       var singleLine = linesCoords[i].split(", "); 

       for (j = 0; j < singleLine.length; j++) { 
        var coordinates = singleLine[j].split(" "); 
        var latlng = new google.maps.LatLng(parseFloat(coordinates[1]), parseFloat(coordinates[0])); 
        bounds.extend(latlng); 

        polylines[i].push(latlng); 

       } 
      } 

      toReturn.push(
       new google.maps.Polygon({ 
        map: map, 
        paths: polylines, 
        strokeColor: 'red', 
        strokeOpacity: 1, 
        strokeWeight: 2, 
        zIndex: 1 
       })); 
       return toReturn; 
      } 

      google.maps.event.addDomListener(window, "load", initialize); 
    </script> 
    </body> 
</html> 

当我打电话与新坐标没有一个超链接hapens例如“文件的文件:/// C:\用户\桌面\ MyfileName.html? q =“POLYGON(在这里我把我的新坐标)”我的想法是改变脚本中的坐标和我的超链接中的新坐标。那可能吗?如果有可能如何?几乎忘了说这个文件在我的电脑上,我想从它的位置打开它。

编辑: 这里是一些关于我想要做什么的更多信息。我已经在我使用的程序中创建了一个属性--Geomedia,我可以创建一个具有绘制多边形坐标的超链接。 enter image description here我想要点击链接在Google地图中打开多边形。我尝试将超链接直接发送到谷歌,但我无法找到如何配置网址。我的意思是,对于一个地方有“?q =”,但我没有找到如何告诉谷歌它是一个多边形,所以我继续前进,并开始寻找替代方法。我发现脚本这很好,如果我手动广告坐标手动它的工作,但我需要使它与给定的超链接工作。我认为应该有办法做到这一点,但是我的javascript技能非常低,所以请耐心等待,告诉我如何做到这一点:)。

新编辑:我总是坚持这个,我真的需要一些帮助,因为我尝试了很多不同的例子和功能,但仍然没有进展。我做错了什么,我无法让它工作。也许我必须放弃,因为即使在这里,我也无法得到一个有益的解决方案。至少如果有人能够给我一个例子的链接,我可以看到如何做,如何修改我的文件,这将是很好的。

回答

0

,以接取到超链接的坐标,您必须先提取它们,为为例,你可以使用PHP,所以你polygone会是这样:

var polygonStr = <?php print($_GET['q']) ?>; 
+0

我得到错误意外的标记 –

+0

你能给我确切的错误 –

+0

未被捕获的SyntaxError:意外的标记? –

0

如果你想要什么 “?”,你可能会,如果你有像使用

var search = window.location.search 

之后呢? “POLYGON(1.8,2.5)”,你可以使用

var regexp = /\"POLYGON \(([\d\.]+)\,([\d\.]+)\)\"/gi 
var coords = regexp.exec(search); 

那么,parseFloat(coords [1])和parseFloat(coords [2])就有了你的共同点。使用它们,你曾经有过的coordonates

+0

我的技能很低,所以你能告诉我该把它放在哪里吗? –

+0

看到edite帖子 –

+0

没有hamer,仍然有默认坐标 –

相关问题