2008-10-08 103 views
2

我的一位朋友已经将谷歌地球插件嵌入到C#用户控件中。所有的工作正常,但当你关闭窗口,我们收到和“未指定的错误”与选项继续运行的脚本与否。从我们的追踪中可以看出,这是谷歌正在放入页面的脚本造成的。有任何想法吗?C#谷歌地球错误

回答

0

我们现在已经在IE和FF中都试过了。工作正常。任何想法为什么错误只会在接近?我们可以以某种方式禁用它吗?这是我们的代码。

<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
<html> 
<head> 
    <script src="http://www.google.com/jsapi?key=ABQIAAAAzghEPRV_D0MDzTELJ4nkXBT2AlVLQD8Rz4_aVbiXesLoyhRIMBRo399nnxv9aY-fqnkVGgTgR-pTsg"> 
    </script> 
    <script> 
     google.load("earth", "1"); 
     var ge = null; 
     var placemark; 
     function init(){ 
      google.earth.createInstance("map3d", initCallback, failureCallback); 
     } 

     function initCallback(object){ 
      ge = object; 
      ge.getWindow().setVisibility(true); 
      ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW); 
      ge.getLayerRoot().enableLayerById(ge.LAYER_TERRAIN, false); 

      placemark = ge.createPlacemark(''); 
      placemark.setName("Current Position"); 
      // Create style map for placemark 
      var normal = ge.createIcon(''); 
      normal.setHref('http://maps.google.com/mapfiles/kml/paddle/red-circle.png'); 
      var iconNormal = ge.createStyle(''); 
      iconNormal.getIconStyle().setIcon(normal); 
      var highlight = ge.createIcon(''); 
      highlight.setHref('http://maps.google.com/mapfiles/kml/paddle/red-circle.png'); 
      var iconHighlight = ge.createStyle(''); 
      iconHighlight.getIconStyle().setIcon(highlight); 
      var styleMap = ge.createStyleMap(''); 
      styleMap.setNormalStyle(iconNormal); 
      styleMap.setHighlightStyle(iconHighlight); 
      placemark.setStyleSelector(styleMap); 

      var options = ge.getOptions(); 

      options.setStatusBarVisibility(true); 
      options.setScaleLegendVisibility(true); 
     } 

     function failureCallback(object){ 
      // Gracefully handle failure. 
      alert("Error"); 
     } 

     function changeViewAngle(angle){ 
      var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE); 
      lookAt.setTilt(angle); 
      ge.getView().setAbstractView(lookAt); 
     } 

     function ShowMarker(){ 
      ge.getFeatures().appendChild(placemark); 
     } 

     function MoveMarker(lon, lat){ 
      // Create point 
      var la = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND); 
      var point = ge.createPoint(''); 
      point.setLatitude(lat); 
      point.setLongitude(lon); 
      placemark.setGeometry(point); 
     } 

     function HideMarker(){ 
      ge.getFeatures().removeChild(placemark); 
     } 

     function SetPosition(lon, lat, heading){ 
      var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND); 
      lookAt.setLatitude(lat); 
      lookAt.setLongitude(lon); 
      lookAt.setHeading(heading); 
      ge.getView().setAbstractView(lookAt); 
     } 

     function SetAltitude(alt){ 
      var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND); 
      lookAt.set(lookAt.getLatitude(), lookAt.getLongitude(), 0, ge.ALTITUDE_RELATIVE_TO_GROUND, 0, lookAt.getTilt(), alt); 
      ge.getView().setAbstractView(lookAt); 
     } 

     function ResizeMap(w, h){ 
      var map = document.getElementById('map3d_container'); 
      map.style.height = h; 
      map.style.width = w; 
     } 

     function AddKML(kml){ 
      var parseKML = ge.parseKml(kml); 
      ge.getFeatures().appendChild(parseKML); 
      return ge.getFeatures().getLastChild().getName(); 
     } 

     function RemoveKML(kmlName){ 
      if (ge.getFeatures().hasChildNodes()) { 
       var nodes = ge.getFeatures().getChildNodes(); 
       for (var i = 0; i < nodes.getLength(); i++) { 
        var child = nodes.item(i); 
        if (child.getName() == kmlName) { 
         ge.getFeatures().removeChild(child); 
        } 
       } 
      } 
     } 

     function OptionsChanged(nav, status, scale, grid, map, terrain, road, border, building){ 
      var options = ge.getOptions(); 
      var form = document.options; 

      if (nav) { 
       ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW); 
      } 
      else { 
       ge.getNavigationControl().setVisibility(ge.VISIBILITY_HIDE); 
      } 

      options.setStatusBarVisibility(status); 
      options.setScaleLegendVisibility(scale); 
      options.setGridVisibility(grid); 
      options.setOverviewMapVisibility(map); 
      ge.getLayerRoot().enableLayerById(ge.LAYER_TERRAIN, terrain); 
      ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, road); 
      ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, border); 
      ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, building); 
     } 



    </script> 
</head> 
<body onload='init()'> 
    <center> 
     <div id='map3d_container' style='border: 1px solid silver; height: 510px; width: 767px;'> 
      <DIV id=map3d style="HEIGHT: 100%"> 
      </DIV> 
     </div> 
    </center> 
</body> 
</html> 
0

我跑了样本,关闭标签时没有得到任何错误。

0

试试这个

yourWebBrowser1.Document.Write(的String.Empty);

当你关闭应用程序。

我的问题: 你能告诉我如何在C#应用程序中使用AddKML(kml)吗?通过字符串或文件路径,我尝试了两个。 我正在寻找一种方式来解析KML文件,...

+0

我不知道,这是一个朋友密码。抱歉! – 2008-12-16 00:03:42