2012-02-10 12 views
3

Google Maps Javascript API v3を使用して、KMLファイルをマップに読み込んでいます。しかし、私はTIMED_OUT、FETCH_ERRORを様々に取得し、特定のレイヤーでOKが返されます。私はそれぞれのURLを取ってmaps.google.comに入れました。レイヤーはいつもうまく読み込まれます。他の誰かが層の読み込みに矛盾がありましたか?さらに重要なことは、Googleマップが要求されたときに一貫してレイヤーを読み込むようにできることはありますか?GoogleマップでKmlLayersを読み込むのは大変ですか?

レイヤーのロードに使用するコードは含まれていますが、実際にはレイヤーが実際に読み込まれるため、フォールトではないことがわかります。

​​

答えて

1

読み込みa KmlLayersは、制御不能ないくつかの項目に依存します。 KMLをホストするサーバ(サーバ、)ファイルとそれをダウンロードしなければならないGoogleサーバの間のネットワーク。このネットワーク(またはサーバー)の速度が遅いほど、Googleサーバーはファイルを取得しにくくなります。私はかなりGoogleのサーバーがあなたのファイルのためにあまりにも長い時間を待つことはないと思うので、ネットワークやサーバーが遅い場合は、おそらくあきらめて、それらのエラーの1つを与えます。そして、私はこれが何回か遅いサーバーで大きなファイルで起こっているのを見てから、再試行するメカニズムはないと思います。再試行する唯一の方法はページを再読み込みしているので、JavaScript APIはレイヤーを再度要求します。

注意すべき事項はthis answerを参照してください。

+0

ありがとうございます私は恐れていた。私は、レイヤーを小さくして複雑にするのは、レイヤーを他のレイヤーよりも確実にロードする傾向があるため、レイヤーを小さくすることに目を向けるでしょう。 – user1202947

0

私にも同様の問題がありました。あなたが表示するjqueryの負荷のkmlファイルを実行するために、あなたのJSを使用し

  • キャッシュ内のすべてのKMLファイルをロードし、それらを保存するあなたはmemcacheの
  • スケジュールジョブを使用する必要が
  • schedularを使用する必要が

    1. には、jsドキュメントのkmlファイルの配列があります。

      var kmlLayerArray = []; 
      

      するvar kmlLayerRegions = [0,0,0,0,0,0,0,0,0,0,0,0,0、]。 //レイヤーを保持する

    2. kmlLayer = new google.maps.KmlLayer(url);

       kmlLayer.setValues({ 
            suppressInfoWindows : true 
           }); 
      
           kmlLayer.setValues({ 
            preserveViewport : bool 
           }); 
           kmlLayer.setMap(map); 
      
           kmlLayerArray.push(kmlLayer); 
           kmlLayerRegions[region] = kmlLayer; 
      
           addKmlEventListener(map,kmlLayer); //extra stuff 
      

    関数addKmlEventListener(マップ、kmlLayer){ google.maps.event.addListener(kmlLayer、 'クリック'、関数(kmlEvent){

    $.ajax({ 
         url : 'http://' + top.location.host + '/mcmap/feed/kml.php?action=kmlclick', 
         data : "id=" + surveyid, 
         dataType : 'json', 
         success : function(data) { 
    
          // do whatever 
         }, 
         error : function(jqXHR, textStatus, 
           errorThrown) { } 
        }); 
    
    }); 
    

    }

    フィード

    if (!$contents = $cache->load("kml_survey_id_" . $surveyId)) { 
          $log->debug("not cached"); 
    
          $kml = $mapper->getSurveyKML($seismicLibrary->getSurvey($surveyId), "#FFFFFF"); // format kml file here 
          $zip = new ZipArchive(); 
          $filename = "/tmp/" . time() . rand() . ".zip"; 
          $res = $zip->open($filename, ZipArchive::CREATE); 
          if ($res === TRUE) { 
    
           $zip->addFromString("doc.kml", $kml); 
           $zip->close(); 
          } 
    
          $file = fopen($filename, "rb"); 
          $contents = fread($file, filesize($filename)); 
          fclose($file); 
    
          unlink($filename); 
          //$log->debug($kml); 
          $cache->save($contents, "kml_survey_id_" . $surveyId); 
         } 
    
         header('Content-type: application/vnd.google-earth.kml+xml'); 
         //header('Content-type: application/vnd.google-earth.kmz'); 
    
         echo $contents; 
    
  • 関連する問題