2015-11-28 8 views
11

今朝、私はちょうどGoogleマップスクリプトのエラーを取得し始めました。Onion.jsのGoogle Mapsスクリプトエラー

ライン:0 文字:0 エラー:スクリプトエラー コード:0 URL:

私はすべての私のコードは、以前のバージョンに戻って変更しますが、それはそれでも戻りました。

私は以下のスクリプトを含めますが、これはIEをインターフェイスするDelphiのTWebBrowserで実行されることを言及する必要があります。

プログラムを実行して、ページとやりとりして、アイドル状態にすることができます。ユーザーのやりとりがなくても20秒かかりましたが、上記の永続エラーが発生します。エラーメッセージボックスを閉じると、すぐに同じメッセージが表示されます。

私は数ヶ月間このプロジェクトを進めてきましたが、これが始まりました。私はいくつかのバージョンをロールバックしましたが、それはまだ存続します。

どこから探し始めますか?

<html> 
    <head> 
    <title>Find your Qtr minute locator</title> 
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?api=AIzaSyAa7YZpvi09ig92s_BLP2H3QVLTmoqdcQQ&amp;v=3.exp&amp;libraries=geometry&amp;sensor=false"></script> 
    </head> 
    <body><!-- Declare the div, make it take up the full document body --> 
    <div id="map-canvas" style="HEIGHT: 100%; WIDTH: 100%"></div> 
    <script type="text/javascript"> 
    var map; 
    var idx = 0; 
    var qtrArray = []; 
    var userGridArray = []; 
    var Startlatlng = ""; 
    var llOffset = 0.00416666666667; 
    var babyOffset = (llOffset/2); // offsets gridSelector 1/2 qtr min 
    var drawGridSelectBox = false; 
    var findNeighbor = false; 
    var firstRun = true; 
    var drawGridBox = false; 
    var deSelectOn = false; 
    var GridSelect = false; 
    var gridOverBox = new google.maps.Polygon(); 
    var gridSelectBox = new google.maps.Polygon(); 

    var gridline; 
    var polylinesquare; 
    var latPolylines = []; 
    var lngPolylines = []; 
    var lngLabels = []; 
    var otherColor = "#128A00"; 
    var bounds = new google.maps.LatLngBounds(); 

    function initialize() { 
     map = new google.maps.Map(document.getElementById("map-canvas"), { 
      center: new google.maps.LatLng(34.0, -84.0), 
      zoom: 14, 
      streetViewControl: true, 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      scaleControl: true 
     }); 

     google.maps.event.addListener(map, "click", function (event) { 
      if (!google.maps.geometry.poly.containsLocation(event.latLng, gridSelectBox)) { 
       map.setZoom(14); 
       if (findNeighbor) 
       MarkArea(event.latLng.lat(), event.latLng.lng()); 
       if (drawGridSelectBox) { 
        createGridSelectBox(event.latLng); 
        GridSelect = !firstRun; 
        if (!GridSelect) { 
         ClearGrid() 
        } 
       } 

       for(var xx=0;xx<latPolylines.length;++xx){ 
        for(var yy=0;yy<lngPolylines.length-1;++yy){ 
         var latLng=new google.maps.LatLng(latPolylines[xx].getPath().getAt(0).lat(), 
           lngPolylines[yy].getPath().getAt(0).lng()); 

         if ((google.maps.geometry.poly.containsLocation(latLng, gridSelectBox))&&(!firstRun)) 
         { 
          drawGridBox = true; 
          createGridBox(latLng); 
         } 
        } 
       } 
       firstRun = false; 
       map.panTo(event.latLng); 
       drawGridBox = false; 

      }}); 

     DrawGridOn(); 
     google.maps.event.addListener(map, "idle", function() { 
      createGridLines(map.getBounds()); 
     }); 
    } // initialize 

    google.maps.event.addDomListener(window, "load", initialize); 

    function createGridLines(bounds) { 
     for (var i = 0; i < latPolylines.length; i++) { 
      latPolylines[i].setMap(null); 
     } 

     latPolylines = []; 
     for (var j = 0; j < lngPolylines.length; j++) { 
      lngPolylines[j].setMap(null); 
     } 
     lngPolylines = []; 

     for (var k = 0; k < lngLabels.length; k++) { 
      lngLabels[k].setMap(null); 
     } 
     lngLabels = []; 

     if (map.getZoom() < 10) return; 
     var north = bounds.getNorthEast().lat(); 
     var east = bounds.getNorthEast().lng(); 
     var south = bounds.getSouthWest().lat(); 
     var west = bounds.getSouthWest().lng(); 

    // define the size of the grid 
     var topLat = Math.ceil(north/llOffset) * llOffset; 
     var rightLong = Math.ceil(east/llOffset) * llOffset; 

     var bottomLat = Math.floor(south/llOffset) * llOffset; 
     var leftLong = Math.floor(west/llOffset) * llOffset; 


     var qtrNELatLngCode = ddToQM(topLat, rightLong); 
     var qtrNorth = qtrNELatLngCode.substring(0, 5); 
     var qtrEast = qtrNELatLngCode.substring(5, 12); 
     var qtrSWLatLngCode = ddToQM(bottomLat, leftLong); 
     var qtrSouth = qtrSWLatLngCode.substring(0, 5); 
     var qtrWest = qtrSWLatLngCode.substring(5, 12); 

     for (var latitude = bottomLat; latitude <= topLat; latitude += llOffset) latPolylines.push(new google.maps.Polyline({ 
      path: [ 
       new google.maps.LatLng(latitude, leftLong), new google.maps.LatLng(latitude, rightLong)], 
      map: map, 
      geodesic: true, 
      strokeColor: "#0000FF", 
      strokeOpacity: 0.1, 
      strokeWeight: 1 
     })); 
     for (var longitude = leftLong; longitude <= rightLong; longitude += llOffset) lngPolylines.push(new google.maps.Polyline({ 
      path: [ 
       new google.maps.LatLng(topLat, longitude), new google.maps.LatLng(bottomLat, longitude)], 
      map: map, 
      geodesic: true, 
      strokeColor: "#0000FF", 
      strokeOpacity: 0.1, 
      strokeWeight: 1 
     })); 

     if (map.getZoom() < 15) { 
      for (var l = 0; l < lngLabels.length; l++) { 
       lngLabels[l].setMap(null); 
      } 
      lngLabels = []; 
      return; 
     } // set lngLabels to null 

     for(var x=0;x<latPolylines.length;++x){ 
      for(var y=0;y<lngPolylines.length-1;++y){ 
       var latLng=new google.maps.LatLng(latPolylines[x].getPath().getAt(0).lat(), 
         lngPolylines[y].getPath().getAt(0).lng()); 

       var qtrLatLng = ddToQM(latLng.lat(), latLng.lng()); 

       lngLabels.push(new google.maps.Marker({ 
        map:map, 
        position:latLng, 
        icon:{ url:"https://chart.googleapis.com/chart?" 
        +"chst=d_bubble_text_small&chld=bb|" 
        + qtrLatLng 
        +"|FFFFFF|000000", 
         anchor:new google.maps.Point(0,42) 
        } 
       })); 
      } 
     } 
     external.ShowQtrMinBounds(qtrNorth, qtrSouth, qtrEast, qtrWest); 
    } // end createGridLines 

    function createGridSelectBox(point) { 
    // Square limits 
     var smPoint = point; 

     var bottomLeftLat = (Math.floor(point.lat()/llOffset) * llOffset) - babyOffset; 
     var bottomLeftLong = (Math.floor(point.lng()/llOffset) * llOffset) - babyOffset; 


     var gridLineSquare = [ 
      new google.maps.LatLng(bottomLeftLat, bottomLeftLong), //lwr left 
      new google.maps.LatLng(bottomLeftLat, bottomLeftLong + llOffset), //lwr right 
      new google.maps.LatLng(bottomLeftLat + llOffset, bottomLeftLong + llOffset), //upr right 
      new google.maps.LatLng(bottomLeftLat + llOffset, bottomLeftLong)]; //upr left 
    //auto-complete to lwr left 

     if (drawGridSelectBox == true) { 
      gridSelectBox = new google.maps.Polygon({ 
       path: gridLineSquare, 
       draggable:true, 
       geodesic:true, 
       editable :true, 
       fillColor: "#FF0000", 
       fillOpacity: 0.35, 
       strokeColor: "#CC0099", 
       strokeOpacity: 0.1, 
       strokeWeight: 1 
      }); 

      gridSelectBox.setMap(map); 
      drawGridSelectBox = false; 
     } 
    } 

    function MarkArea(Lat, Lng) { 
     var latLng = new google.maps.LatLng(Lat,Lng); 
     drawUserGrids(latLng); 
    } 

    function SaveQtrMin(){ 
       for (var m in qtrArray) { 
        external.SaveQtrMinutes(qtrArray[m].qtrMinute); 
       } 
    } 

    function DrawGridOn() { //creates GridSelectBox 
     addGridOn = false; 
     drawGridSelectBox = true; 
     firstRun = true; 
    } 

    function DrawGridOff() { 
      gridSelectBox.setMap(null); 
      drawGridSelectBox = false; 
    } 

    function GotoLatLng(Lat, Lng) { 
      var latlng = new google.maps.LatLng(Lat,Lng); 
      map.setCenter(latlng); 
    } 

    function DeSelectOn(){ 
     deSelectOn = true; 
     addGridOn = false; 
    } 

    function DeSelectOff(){  // Allows removing 1 QtrMin 
     deSelectOn = false; 
    } 

    function AddGridOn(){  // Allows adding 1 QtrMin 
     addGridOn = true; 
     deSelectOn = false; 
    } 

    function AddGridOff(){ 
     addGridOn = false; 
    } 

    function ClearGrid() { 
     if (qtrArray) { 
      for (var i in qtrArray) { 
       qtrArray[i].setMap(null); 
      } 
     } 
     qtrArray=[]; 
     idx = 0; 
    } 

    function ClearUserGrid() { 
     if (userGridArray) { 
      for (var i in userGridArray) { 
       userGridArray[i].setMap(null); 
      } 
     } 
     userGridArray=[]; 
    } 

    function drawUserGrids(point) { 
    // Square limits 

     var bottomLeftLat = (Math.floor(point.lat()/llOffset) * llOffset); 
     var bottomLeftLong = (Math.floor(point.lng()/llOffset) * llOffset); 

     var gridLineSquare = [ 
      new google.maps.LatLng(bottomLeftLat, bottomLeftLong), //lwr left 
      new google.maps.LatLng(bottomLeftLat, (bottomLeftLong + llOffset)), //lwr right 
      new google.maps.LatLng((bottomLeftLat + llOffset), (bottomLeftLong + llOffset)), //upr right 
      new google.maps.LatLng((bottomLeftLat + llOffset), bottomLeftLong)]; //upr left 


     drawGridBox = true; 

     if (drawGridBox == true) { 

      gridUserArea = new google.maps.Polygon({ 
       path: gridLineSquare, 
       draggable:false, 
       geodesic:true, 
       editable :false, 
       fillColor:otherColor, 
       fillOpacity: 0.35, 
       strokeColor: "#CC0099", 
       strokeOpacity: 0.1, 
       strokeWeight: 1 
      }); 

      gridUserArea.setMap(map); 
      userGridArray.push(gridUserArea); 
     } 
    } 

    function createGridBox(point) { 
     // Square limits 
     var arrayIdx = 0; 
     var addListenersOnPolygon = function(polygon) { 
      google.maps.event.addListener(polygon, 'click', function (event) { 
       if (deSelectOn==true) { 
       arrayIdx = qtrArray.indexOf(polygon); 
       qtrArray.splice(arrayIdx,1); 
       polygon.setMap(null); 
       } 
      }); 
     }; 
     var smPoint = point; 

     var bottomLeftLat = (Math.floor(point.lat()/llOffset) * llOffset); 
     var bottomLeftLong = (Math.floor(point.lng()/llOffset) * llOffset); 


     var gridLineSquare = [ 
      new google.maps.LatLng(bottomLeftLat, bottomLeftLong), //lwr left 
      new google.maps.LatLng(bottomLeftLat, (bottomLeftLong + llOffset)), //lwr right 
      new google.maps.LatLng((bottomLeftLat + llOffset), (bottomLeftLong + llOffset)), //upr right 
      new google.maps.LatLng((bottomLeftLat + llOffset), bottomLeftLong)]; //upr left 
     drawGridBox = true; 

     if (drawGridBox == true) { 
      gridOverBox = new google.maps.Polygon({ 
       path: gridLineSquare, 
       draggable:false, 
       geodesic:true, 
       editable :false, 
       fillColor: "#EAED00", 
       fillOpacity: 0.35, 
       strokeColor: "#CC0099", 
       strokeOpacity: 0.1, 
       strokeWeight: 1, 
       qtrMinute : ddToQM(bottomLeftLat, bottomLeftLong), 
       indexID : ++idx 
      }); 

      gridOverBox.setMap(map); 
      addListenersOnPolygon(gridOverBox); 
      qtrArray.push(gridOverBox); 
     } 
    } 

    function ddToQM(alat, alng) { 
     var latResult, lngResult, dmsResult; 

     alat = parseFloat(alat); 
     alng = parseFloat(alng); 

     latResult = ""; 
     lngResult = ""; 

     latResult += getDms(alat); 
     lngResult += getDms(alng); 

     dmsResult = latResult + lngResult; 

     // Return the resultant string. 
     return dmsResult; 
    } 

    function toggleGridSelection(){ 
     GridSelect = true;//(!!GridSelect); 
    } 

    function findNeighborOn(){ 
     findNeighbor = true; 
     otherColor = randColor(); 
    } 

    function findNeighborOff(){ 
     findNeighbor = false; 
     otherColor = "#128A00"; 
    } 

    function randColor() { 
     var i; 
     var colorArray = ["#B2A209","#A4A07B","#B02600","#6CA200","#BC0072","#B1ADFF","#16CADB","#A1FFD1","#9999CC","#EEFF7C"]; 

     i = Math.floor((Math.random() *10)+1); 
     return colorArray[i]; 
    } 

    function getDms(val) { 
    // Required variables 
     var valDeg, valMin, valSec, interimResult; 
     var qtrMin; 
     val = Math.abs(val); 

    // ---- Degrees ---- 
     valDeg = Math.floor(val); 
     valMin = Math.floor((val - valDeg) * 60); 
     valSec = Math.round((val - valDeg - valMin/60) * 3600 * 1000)/1000; 

     if (valSec == 60){ 
      valMin +=1; 
      valSec = 0; 
     } 
     if (valMin == 60){ 
      valMin +=1; 
      valSec = 0; 
     } 
     interimResult = valDeg+""; 

     if (valMin<10){ 
      valMin = "0"+valMin; 
     } 
     interimResult += valMin + ""; 

     switch(valSec){ 
      case 0 : qtrMin = "A"; 
       break; 
      case 15 : qtrMin = "B"; 
       break; 
      case 30 : qtrMin = "C"; 
       break; 
      case 45 : qtrMin = "D"; 
       break; 

     } 
     interimResult += qtrMin; 
     return interimResult; 
    } 

</script> 
    </body> 
</html> 
+0

どのバージョンのIEが使用されていますか? [サポートされているブラウザ](https://developers.google.com/maps/documentation/javascript/browsersupport) – geocodezip

+1

APIに最近更新がリリースされました:([リリースノート](https://developers.google.com/maps)/documentation/javascript/releases))を参照してください。 [実験版(v3.exp)](https://developers.google.com/maps/documentation/javascript/versions)の使用を避けたいかもしれません。 – geocodezip

+0

私はIE 11を使用しています。私はv 3.22にも戻っています。もっと長い時間走っていたようですが、私は同じエラーが出ています.../js/22/12a/util.js これは本当に必要です。 –

答えて

1

私は同じエラーがありました。 私はちょうど私のために働いた解決策を見つけました。

GoogleマップのURLに "& v = 3.22"を追加したばかりです。このよう :ヘッダセクションに次のメタタグを追加する

http://maps.google.com/maps/api/js?sensor=true&v=3.22

+1

も私のために働きました.. thanks mate! –

+2

推奨しません。これはgoogleがver3.22を推奨しなくなるため、動作を停止します。 –

+0

私はそれがまだ私のために働いていると言わなければならない。 Googleがこのバージョンを非難する場合、私の責任ではありません。 –

14

は私のために、この問題を解決しました。

<meta http-equiv="X-UA-Compatible" content="IE=edge"> 
  • X-UA-互換性のメタタグは、ウェブ制作者は、Internet Explorerのバージョンが ページは次のようにレンダリングされるべきものを選択することができます。
  • エッジモードでは、コンテンツが最高のモードで表示されるようにInternet Explorerに指示します。
+1

これは私のためにも機能します... – xavendano

+0

私のために働かなかった –

3

このonion.jsスクリプトエラーが返され、v = 3.22で問題が解決されなくなりました。問題はIEとonios.jsの問題であることが判明しました。デフォルトでは、Webブラウザを埋め込むと、IE7標準を使用し、それは次のように私の修正プログラムは、レジストリに加えた問題です: -

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"yourApp.exe"=dword:00002EDF 

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"yourApp.exe"=dword:00002EDF 

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"yourApp.exe"=dword:00002EDF 
+0

これを変更する必要もありますか? –

4

私も、このタグを変更しました。それをうまく動かす。ありがとう

<meta http-equiv="X-UA-Compatible" content="IE=edge"/> 

これはver 3.22 & 3.23の両方で動作します。冷凍し、リリースおよび実験:

+0

Repost ..同じ回答を投稿しました –

+0

ああ見落とす.... – NOSUKE

3

Googleはバージョン管理モデルによると2016年、5月24日に

を新しいリリースバージョン3.24を立ち上げ、唯一の3つのバージョンがあります。

https://developers.google.com/maps/documentation/javascript/versions

バージョン3.22引退されており、もはやアクセスすることはできません。

新しいバージョンはIE10とIE11のみをサポートしています。互換モードはサポートされていません。あなたは新しいIEのバージョン

http://www.codeproject.com/Articles/793687/Configuring-the-emulation-mode-of-an-Internet-Expl

Use latest version of Internet Explorer in the webbrowser control

に制御を強制する必要があります

https://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version

https://developers.google.com/maps/documentation/javascript/browsersupport

WebBrowserコントロールがIE 7レンダリングモードをデフォルトにすることができます

また、あなたは地図のJavaScript APIの新バージョンがIE7で使用できないグローバルなJSONオブジェクトに依存しているように見えます

あなたのhtmlにメタタグを追加することができます。だから、代わりにあなたはポリフィルのJSONに試すことができます。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON

1

I 同様の問題を有し、かつ、提供される解決策が私のために動作しませんでした。私は、Delphiのエラーを、TWebBrowserコントロール内でメタタグでも得ていました。

問題を見つけました。

JSON.parseを呼び出すため、Onion.jsでエラーが発生します。

JSON解析は、Webブラウザコントロールではサポートされていません。あなたは(すでにデルファイのために引用された)あなたはJavaScriptにこれを追加することでこれをテストすることができます

'var code = ''"\u2028\u2029"''; JSON.parse(code); ' + 

すべてのブラウザは、Delphiで実行すると、それは即座にエラーを発生させます

var code = '"\u2028\u2029"'; 
JSON.parse(code); 

実行する必要があります。

あなたは(すでにデルファイのために引用された)JSON3のポリフィルで全体を避けることができます。

'<script src="https://cdn.jsdelivr.net/json3/3.3.2/json3.js"></script>' + 

予想通りその後、JSONは、問題を解決し、定義し、作業されます。