javascript - IE8 的谷歌地图 .setMap 问题

标签 javascript internet-explorer google-maps google-maps-api-3 internet-explorer-8

所以我在这里遇到了一些问题。此脚本在除 IE8 之外的所有浏览器中都可以正常工作

route() 函数被调用 - 并被赋予 Google map 编码的多边形和折线。每次 IE8 尝试执行 setMap 时脚本都会中断

我认为这个问题与 map 超出其范围有关?还是尾随的逗号错误?我刚刚花了最后几个小时来解决这个问题,但我无法修复它。

有什么想法吗?非常感激。通常不喜欢粘贴整个代码,因为它有点让人不知所措,但在这种情况下需要它。

var markersArray = [];


function initMap(lat,lng) {
    if(lat) {

        var myLatLng = new google.maps.LatLng(lat, lng);
        var zoomi=13;
    }else{

        var myLatLng = new google.maps.LatLng(54.162434, -2.285156);
        var zoomi=5;
    }

    var myOptions = {
        zoom: zoomi,
         zoomControl: true,
        panControl: false,
       streetViewControl: false,
       zoomControlOptions: {
            style: google.maps.ZoomControlStyle.LARGE,
            position: google.maps.ControlPosition.LEFT_CENTER
     },
        center: myLatLng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map"), myOptions);
}


function route(journeyPolyy,journeyLine,startLat,startLng,endLat,endLng) {

reset();

    var startLatLng=startLat + ',' + startLng;

    var start = new google.maps.LatLng(startLat,startLng);
    var end = new google.maps.LatLng(endLat,endLng);

    var decodedPath = google.maps.geometry.encoding.decodePath(journeyLine);
      var flightPath = new google.maps.Polyline({
        path: decodedPath,
        strokeColor: 'blue',
        strokeOpacity: 0.5,
        strokeWeight: 5
      });
    markersArray.push(flightPath);

    flightPath.setMap(map);
     var marker = new google.maps.Marker({
        position: start
    });

    markersArray.push(marker);


    marker.setMap(map);

     var endPpoint = new google.maps.Marker({
        position: end
    });
    markersArray.push(endPpoint);


    endPpoint.setMap(map);

    poly = journeyPolyy.replace(/\\\\/g,"\\");

    var decodedPath = google.maps.geometry.encoding.decodePath(poly);

    var decodedLevels = decodeLevels("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB");

    var setRegion = new google.maps.Polygon({
        path: decodedPath,
        levels: decodedLevels,
        strokeColor: "#FF0000",
        strokeOpacity: 0.8,
        strokeWeight: 1,
        fillColor    : '#FF0000',
        fillOpacity  : 0.1,
        map: map
    });
    setRegion.setMap(map);
    markersArray.push(setRegion);
        var obj= document.getElementById('map');
    obj.style.visibility='visible';
    HideContent('mainContent');
    map.setCenter(start); 
    map.setZoom(13); 
}


function decodeLevels(encodedLevelsString) {
    var decodedLevels = [];

    for (var i = 0; i < encodedLevelsString.length; ++i) {
        var level = encodedLevelsString.charCodeAt(i) - 63;
        decodedLevels.push(level);
    }
    return decodedLevels;
}

function reset() {
  if (markersArray) {
    for (i in markersArray) {
      markersArray[i].setMap(null);
    }
    markersArray.length = 0;
  }
}

最佳答案

存在命名冲突(map-objects 名称与元素的 id 相同)

您可以为 div 使用不同的 ID,为 map 变量使用不同的名称,或者在全局范围内声明 map 变量:

var map;

关于javascript - IE8 的谷歌地图 .setMap 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114576/

相关文章:

delphi - 用Delphi如何获取当前安装的IE版本?

android - 如何从 Android 中的 ArrayList 在谷歌地图上添加标记

Javascript/Nodejs 检查某些内容是否为 bigint 类型?

javascript - 了解 Javascript 对象代码片段

javascript - JS从IE/Microsoft Edge复制富文本

java - 自动完成文本并在 map 上搜索

java - 始终在 Android 中显示 map 标记标题

javascript - 导航栏下拉消失在 canvasjs 图表后面

javascript - 单击单选按钮时动态显示元素/标签

javascript - 如何为IE6-IE8做一个按摩来升级他们的浏览器?