C # Ошибка Google Планета Земля - PullRequest
2 голосов
/ 08 октября 2008

Мой друг встроил плагин Google Earth в пользовательский элемент управления C #. Все работает нормально, но когда вы закрываете окно, мы получаем и «Unspecified Error» с возможностью продолжить запуск скриптов или нет. Из нашего отслеживания кажется, что это происходит из-за скрипта, который Google помещает на страницу. Есть идеи?

Ответы [ 4 ]

2 голосов
/ 22 января 2009

Вот мой пример интеграции c # / Google Планета Земля API, которая охватывает вашу проблему (см. Комментарии) http://fraserchapman.blogspot.com/2008/08/google-earth-plug-in-and-c.html

Кроме того, вот еще один из моих проектов, в котором используется библиотека типов плагинов COM Google Earth (plugin_ax.dll), преобразованная в эквивалентные определения в общей языковой сборке во время выполнения. Это может быть полезным. http://fraserchapman.blogspot.com/2008/12/google-earth-plugin-control-library.html

0 голосов
/ 08 октября 2008

Я запустил образец и не получил никаких ошибок при закрытии вкладки.

0 голосов
/ 07 ноября 2008

попробуйте

yourWebBrowser1.Document.Write (String.Empty);

при закрытии приложения.

мой вопрос: Можете ли вы показать мне, как использовать AddKML (kml) в приложении C #? по строке или пути к файлу я пробовал оба. Я ищу способ разбора файлов kml ...

0 голосов
/ 08 октября 2008

Мы попробовали это как в 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>
...