0

IE7 使用 Google Maps API 给我一个脚本问题。

加载页面时,它会在警告框中显示“未找到未定义”。

这只发生在 IE7 中,而不是 IE8 或 IE9。在其他浏览器中也很好,我猜是编码错误。一旦我取出 JS,显然没有警告但 map 不起作用。

这是我的整个 JS。提前致谢!

var map;
var markers = [];
var infoWindow;
var panorama;

function init_map() {
    map = new google.maps.Map(document.getElementById("map"), {
        //center: new google.maps.LatLng(40, -100),
        zoom: 4,
        mapTypeId: 'roadmap',
        mapTypeControlOptions: {
            style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
        }
    });
    infoWindow = new google.maps.InfoWindow();
    var address = $('#address').val();
    var address_optional = $('#address_optional').val();
    if (address == '' && address_optional != '1') init_location();
    else searchLocations(address_optional);
}

function init_location(lat, lng, zoom) {
    if (lat === undefined) lat = 40;
    if (lng === undefined) lng = -100;
    if (zoom === undefined) zoom = 4;
    map = new google.maps.Map(document.getElementById("map"), {
        center: new google.maps.LatLng(lat, lng),
        zoom: zoom,
        mapTypeId: 'roadmap',
        mapTypeControlOptions: {
            style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
        }
    });
}
$("#next").live('click', function(event) {
    event.preventDefault();
    var page_number = $('body').data("page_number");
    $('body').data("page_number", (page_number + 1));
    searchLocations();
});
$("#previous").live('click', function(event) {
    event.preventDefault();
    var page_number = $('body').data("page_number");
    $('body').data("page_number", (page_number - 1));
    searchLocations();
});

function searchLocations() {
    var address = $('#address').val();
    var geocoder = new google.maps.Geocoder();
    var address_optional = $('#address_optional').val();
    geocoder.geocode({
        address: address
    }, function(results, status) {
        if ((status == google.maps.GeocoderStatus.OK)) {
            searchLocationsNear(results[0].geometry.location);
        } else {
            if (address_optional == '1') {
                searchLocationsNear('', 1);
            } else {
                alert(address + ' not found');
            }
        }
    });
}

function clearLocations() {
    infoWindow.close();
    for (var i = 0; i < markers.length; i++) {
        markers[i].setMap(null);
    }
    markers.length = 0;
    var option = document.createElement("option");
    option.value = "none";
    option.innerHTML = "See all results:";
}

function createSidebarEntry(markerNum, sidebarContent, markerContent, lat, lng) {
    var div = document.createElement('div');
    div.innerHTML = sidebarContent;
    div.style.cursor = 'pointer';
    div.style.marginBottom = '5px';
    div.onclick = function() {
        infoWindow.setContent(markerContent);
        infoWindow.open(map, markers[markerNum]);
        init_location(lat, lng, 16);
        var latlng = new google.maps.LatLng(
        parseFloat(lat), parseFloat(lng));
        createMarker(latlng, lat, lng, markerContent);
    }
    return div;
}

function resizeMap(width, height) {
    $('#map').animate({
        width: width,
        height: height
    }, function() {
        google.maps.event.trigger(map, 'resize');
        map.setCenter(map.getCenter());
    });
}

function streetView(lat, lng) {
    var dom = 'streetview';
    panorama = new google.maps.StreetViewPanorama(document.getElementById(dom));
    displayStreetView(lat, lng, dom);
    if ($('#map').height() == 600) {
        resizeMap(850, 300);
        $('#streetview').height(300);
    }
}

function searchLocationsNear(center, address_optional) {
    clearLocations();
    var sidebar = document.getElementById('sidebar');
    sidebar.innerHTML = '';
    var page_number = $('body').data("page_number");
    if (page_number == null) {
        page_number = 1;
        $('body').data("page_number", page_number);
    }
    var categoryid = $('#categoryid').val();
    if (address_optional == '1') var searchUrl = 'map_data.php?categoryid=' + categoryid + '&page_number=' + page_number + '&address_optional=' + address_optional;
    else var searchUrl = 'map_data.php?lat=' + center.lat() + '&lng=' + center.lng() + '&categoryid=' + categoryid + '&page_number=' + page_number;
    //alert(searchUrl);
    $.ajax({
        type: 'GET',
        url: searchUrl,
        dataType: 'json',
        success: function(msg) {
            var locations = msg.locations;
            var markersContent = msg.markersContent;
            var sidebarContent = msg.sidebarContent;
            var bounds = new google.maps.LatLngBounds();
            for (var i = 0; i < locations.length; i++) {
                var name = locations[i]['name'];
                var address = locations[i]['address'];
                var distance = parseFloat(locations[i]['distance']);
                var latlng = new google.maps.LatLng(
                parseFloat(locations[i]['lat']), parseFloat(locations[i]['lng']));
                var sidebarEntry = createSidebarEntry(i, sidebarContent[i], markersContent[i], locations[i]['lat'], locations[i]['lng']);
                sidebar.appendChild(sidebarEntry);
                createOption(name, distance, i);
                createMarker(latlng, locations[i]['lat'], locations[i]['lng'], markersContent[i]);
                bounds.extend(latlng);
            }
            $('#pagination').html(msg.pagination);
            map.fitBounds(bounds);
        }
    });
    resizeMap(850, 600);
    $('#streetview').html('').height(0);
}

function createMarker(latlng, lat, lng, html) {
    var marker = new google.maps.Marker({
        map: map,
        position: latlng,
        animation: google.maps.Animation.DROP
    });
    google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, this);
    });
    $("#sidebar div").click(function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
    });
    markers.push(marker);
}

function createOption(name, distance, num) {
    var option = document.createElement("option");
    option.value = num;
    option.innerHTML = name + "(" + distance.toFixed(1) + ")";
}

function displayStreetView(lat, lng, dom) {
    var latlng = new google.maps.LatLng(lat, lng);
    var panoramaOptions = {
        position: latlng,
        pov: {
            heading: 270,
            pitch: 0,
            zoom: 1
        }
    };
    panorama = new google.maps.StreetViewPanorama(document.getElementById(dom), panoramaOptions);
    map.setStreetView(panorama);
}
4

0 回答 0