【问题标题】:Google Map v3 API KML overlay no longer loads kml filesGoogle Map v3 API KML 覆盖不再加载 kml 文件
【发布时间】:2015-03-22 20:40:34
【问题描述】:

我不确定为什么会突然发生这种情况,但我使用 google maps api 和 jquery 的应用程序不再像以前那样加载 KML 文件。我没有更改代码,所以我不知道可能是什么原因。我已经更新了 jquery 库,认为这可能导致问题没有运气。我已经确保 kml 文件仍然存在于它们所在的正确位置。我读到谷歌正在改变 KML 叠加层的工作方式,但我对这篇文章的理解是那将是在 2 月份,但我还没有把它计算在内。

如果我猜的话,我会说是不再支持 setMap() 函数,但此时我不知道,我只是在猜测。

任何帮助将不胜感激。 谢谢!

下面是我用来加载 KML 文件的代码。

<link rel="stylesheet" href="jQuerythemes/jquery.mobile.theme-1.4.5.min.css" />
<link rel="stylesheet" href="jQuerythemes/jquery.mobile.structure-1.4.5.min.css" />
<link rel="stylesheet" href="jQuerythemes/jquery.mobile.icons-1.4.5.min.css" />       

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="jQuerythemes/jquery-2.1.3.min.js"></script>
<script src="jQuerythemes/jquery.mobile-1.4.5.min.js"></script>

<script src="https://maps.googleapis.com/maps/api/js?v=3&libraries=places"></script>
<script src="jQuerythemes/jquery.geocomplete.min.js"></script> 

<script type="text/javascript">
    $(document).on('pageshow', '#map_page', function () {
        initialize();
        layersOFFonload();          
    });

var routesLayerKML = [];

function initialize() {
        // set the default center of the map
        var mapCenter = new google.maps.LatLng(55.1669513, -118.8031093);

        //updateMapSize(mapCenter);
        // set the display options for the map
        var myOptions = {
            mapTypeControl: false,
            zoom: 12,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            center: mapCenter
        }
        // add the map to the map placeholder
        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

        });

 var kmlOptions = {
            suppressInfoWindows: false,
            preserveViewport: false,
            map: map
        };

 routesLayerKML[0] = new google.maps.KmlLayer('http://mydomain/KML/mobile_route1.kml', kmlOptions);
        routesLayerKML[1] = new google.maps.KmlLayer('http://mydomain/KML/mobile_route2.kml', kmlOptions);
        routesLayerKML[2] = new google.maps.KmlLayer('http://mydomain/KML/mobile_route3.kml', kmlOptions);

function layersOFFonload(){
        routesLayerKML[0].setMap(null);
        routesLayerKML[1].setMap(null);
        routesLayerKML[2].setMap(null);           
               } 

    function toggleLayer(i) {   
        if (routesLayerKML[i].getMap() === null) {
            routesLayerKML[i].setMap(map);
        }
        else {
            routesLayerKML[i].setMap(null);
        }
    }


<div data-role="page" id="map_page">
    <div data-role="panel" id="routeLayersPage" data-position="right" data-display="overlay">
        <div data-role="header">
            <h1>Routes</h1>
        </div>        
        <div>
            <input type="checkbox" id="routesLayerKML0" onclick="toggleLayer(0)" />
                <label for="routesLayerKML0">Route 1</label>
                <input type="checkbox" id="routesLayerKML1" onclick="toggleLayer(1)" />
                <label for="routesLayerKML1">Route 2</label>
                <input type="checkbox" id="routesLayerKML2"  onclick="toggleLayer(2)" />
                <label for="routesLayerKML2">Route 3</label>
                <input type="checkbox" id="routesLayerKML3" onclick="toggleLayer(3)" />
            </div>
            <a href="#my-header" data-role="button" data-rel="close">Close panel</a>
        </div>

【问题讨论】:

  • KmlLayer works for me。也许您的服务器配置已更改并且不再使用正确的 MIME 类型提供这些文件(这发生在我身上)。如果没有指向 KML 的链接,则无法判断。
  • 你的绝对正确!!那是确切的问题,我不确定为什么或何时会改变,但 MIME 类型完全丢失了。感谢您的回复。当然很高兴知道为什么有人投票反对我对该职位的声誉。这就是这个论坛的问题,这样的人会阻止其他人获得足够的声誉点来实际为其他人发布答案。在您单击该向下按钮之前,您应该发布一个原因。噗。
  • 咨询您的托管公司。当它发生在我身上时,是因为有人入侵了我的网站并且有一个漏洞利用活动。

标签: jquery jquery-mobile google-maps-api-3 kml


【解决方案1】:

正如@geocodezip 所说,IIS 中缺少 MIME 类型。

【讨论】:

    猜你喜欢
    • 2011-07-25
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    相关资源
    最近更新 更多