2014-07-17 68 views
0

以下是我正在使用的代码。我试图修复一个地图不显示在所有浏览器中的错误。
未捕获ReferenceError:谷歌未定义(Wordpress)

在开发工具(铬),我得到一个Uncaught ReferenceError: google is not defined错误。

$(document).ready(function(){ 

//google map 

function loadGoogleMap() { 
    var mapOptions = { 
     scrollwheel: false, 
     zoom:  14, 
     mapTypeId: google.maps.MapTypeId.HYBRID 
    }; 
    var map = new google.maps.Map($("#map")[0], mapOptions); 
    var bounds = new google.maps.LatLngBounds(); 

    var count = 0; 
    $.each(dealers, function(ind,dealer){ 

     var point = new google.maps.LatLng(dealer.lat,dealer.lng) 
     var marker = new google.maps.Marker({ 
      position: point, 
      map:  map, 
      title: dealer.post_title, 
      icon:  icons[count] 
     }); 
     var infowindow = new google.maps.InfoWindow({ 
      content:'<div class="infowindow">'+ 
         '<strong>' + dealer.post_title + '</strong><br/>' + 
         '<address>' + 
          dealer.address1 + '<br/>' + 
          dealer.city + ', ' + dealer.state + '<br/>' + 
         '</address>' + 
         dealer.phone + '<br/>' + 
         (dealer.url != '' ? '<a href="' + dealer.url+ '">Dealer Website</a><br/>' : '') + 
         (dealer.email != '' ? '<a href="mailto:' + dealer.email+ '">Email Dealer</a><br/>' : '') + 
         '<a href="http://maps.google.com/maps?f=d&source=s_d&saddr=&daddr=' + dealer.address + ', ' + dealer.city + ', ' + dealer.state + '" target="_blank">Get Directions</a>'+ 
        '</div>' 
     }); 
     google.maps.event.addListener(marker,'click',function(){ 
      infowindow.open(map,marker); 
     }); 

     // add event listener to distributor list 
     $('#distributors-list li:eq(' + count + ')').click(function(){ 
      infowindow.open(map,marker); 
     }); 

     bounds.extend(point); 

     count++; 
    }); 

    map.fitBounds(bounds); 
} 
loadGoogleMap(); 

// reuse fancybox loading icon script 

var loadingTimer, loadingFrame = 1; 

var locator_animate_loading = function() { 
    locatorLoading = $('#ajax-loading-overlay'); 
    if (!locatorLoading.is(':visible')){ 
     clearInterval(loadingTimer); 
     return; 
    } 
    $(locatorLoading).css('background-position', '0 ' + (loadingFrame * -40) + 'px'); 

    loadingFrame = (loadingFrame + 1) % 12; 
}; 

$('form.distributor-search').submit(function(e){ 
    locatorLoading = $('#ajax-loading-overlay'); 
    locatorLoading.show(); 
    loadingTimer = setInterval(locator_animate_loading, 66); 
    $('#locator-content').load(site_url + '/graceports/find-a-distributor?ajax=1&address=' + encodeURIComponent($('#address_search').val()) + ' #ajax-contents', function() { 
     // load updated list of dealers 
     $('#locator-content').append('<script src="' + site_url + '/js/dealers.php?address=' + encodeURIComponent($('#address_search').val()) + '"></script>'); 
     loadGoogleMap(); 
     locatorLoading.hide(); 
    }); 
    e.preventDefault(); 
}); 

navigator.geolocation.getCurrentPosition(function(position){ 
    $.get(site_url + '/cms/wp-content/themes/grace/inc/latlng-to-zip.php?latlng=' + encodeURIComponent(position.coords.latitude + ' ' + position.coords.longitude), function(data){ 
     $('#address_search').val(data); 
     $('form.distributor-search').trigger('submit'); 
    }); 
}); 

}); 
+2

尽管如此,你在哪里加载谷歌地图API? – MarioDS

+0

是的,你需要加载谷歌地图API - http://maps.googleapis.com/maps/api/js?sensor=true – stinkysGTI

+0

我已经继承了这个代码,这也是我的问题。在wordpress模板文件(find-a-distributor.php)中引用了locator.js文件(上面) – swimbikerun

回答

1

您需要等到谷歌已经加载之后再运行您的脚本。将这个地方你的文档中:

$(document).ready(function(){ 

//google map 



function loadGoogleMap() { 
    var mapOptions = { 
     scrollwheel: false, 
     zoom:  14, 
     mapTypeId: google.maps.MapTypeId.HYBRID 
    }; 
    var map = new google.maps.Map($("#map")[0], mapOptions); 
    var bounds = new google.maps.LatLngBounds(); 

    function loadScript() { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&' + 
    'callback=initialize'; 
    document.body.appendChild(script); 

}

var count = 0; 
    $.each(dealers, function(ind,dealer){ 

     var point = new google.maps.LatLng(dealer.lat,dealer.lng) 
     var marker = new google.maps.Marker({ 
      position: point, 
      map:  map, 
      title: dealer.post_title, 
      icon:  icons[count] 
     }); 
     var infowindow = new google.maps.InfoWindow({ 
      content:'<div class="infowindow">'+ 
         '<strong>' + dealer.post_title + '</strong><br/>' + 
         '<address>' + 
          dealer.address1 + '<br/>' + 
          dealer.city + ', ' + dealer.state + '<br/>' + 
         '</address>' + 
         dealer.phone + '<br/>' + 
         (dealer.url != '' ? '<a href="' + dealer.url+ '">Dealer Website</a><br/>' : '') + 
         (dealer.email != '' ? '<a href="mailto:' + dealer.email+ '">Email Dealer</a><br/>' : '') + 
         '<a href="http://maps.google.com/maps?f=d&source=s_d&saddr=&daddr=' + dealer.address + ', ' + dealer.city + ', ' + dealer.state + '" target="_blank">Get Directions</a>'+ 
        '</div>' 
     }); 
     google.maps.event.addListener(marker,'click',function(){ 
      infowindow.open(map,marker); 
     }); 

     // add event listener to distributor list 
     $('#distributors-list li:eq(' + count + ')').click(function(){ 
      infowindow.open(map,marker); 
     }); 

     bounds.extend(point); 

     count++; 
    }); 

    map.fitBounds(bounds); 
} 
loadGoogleMap(); 

// reuse fancybox loading icon script 

var loadingTimer, loadingFrame = 1; 

var locator_animate_loading = function() { 
    locatorLoading = $('#ajax-loading-overlay'); 
    if (!locatorLoading.is(':visible')){ 
     clearInterval(loadingTimer); 
     return; 
    } 
    $(locatorLoading).css('background-position', '0 ' + (loadingFrame * -40) + 'px'); 

    loadingFrame = (loadingFrame + 1) % 12; 
}; 

$('form.distributor-search').submit(function(e){ 
    locatorLoading = $('#ajax-loading-overlay'); 
    locatorLoading.show(); 
    loadingTimer = setInterval(locator_animate_loading, 66); 
    $('#locator-content').load(site_url + '/graceports/find-a-distributor?ajax=1&address=' + encodeURIComponent($('#address_search').val()) + ' #ajax-contents', function() { 
     // load updated list of dealers 
     $('#locator-content').append('<script src="' + site_url + '/js/dealers.php?address=' + encodeURIComponent($('#address_search').val()) + '"></script>'); 
     loadGoogleMap(); 
     locatorLoading.hide(); 
    }); 
    e.preventDefault(); 
}); 

navigator.geolocation.getCurrentPosition(function(position){ 
    $.get(site_url + '/cms/wp-content/themes/grace/inc/latlng-to-zip.php?latlng=' + encodeURIComponent(position.coords.latitude + ' ' + position.coords.longitude), function(data){ 
     $('#address_search').val(data); 
     $('form.distributor-search').trigger('submit'); 
    }); 
}); 

});

+0

我不确定在我的PHP文件中是否加载了google API:http://s000.tinyupload.com /index.php?file_id=68363563158541532831 – swimbikerun

+0

它不是 - 使用我粘贴上面的代码段应该可以帮助你加载它 – lfender6445

+0

只需添加代码,但仍然没有任何内容... – swimbikerun

相关问题