我在使用谷歌地图 API 时遇到两个错误:
我不知道这两者之间有没有什么联系,但最终的结果是我的页面无法加载地图。
这是我的头标签:
<script type="text/javascript" src="../s/Jquery/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="../s/jquery.placeholder.min.js"></script>
<script type="text/javascript" src="../s/index.js"></script>
<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.position.js"></script>
<script type="text/javascript" src="../s/Jquery/ui/jquery.ui.autocomplete.js"></script>
<script src="../dd/markerclusterer_compiled.js" type="text/javascript"></script><script src="../dd/dealers_js.js" type="text/javascript"></script><script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
这是我称之为谷歌地图的功能:
function set_google_map(set_region)
{
var zoom;
var center;
switch (set_region) {
case "usa":
zoom = 3;
center = new google.maps.LatLng(37.09, -95.71);
break;
case "europe":
zoom = 3;
center = new google.maps.LatLng(48.58, 7.71);
break;
case "east":
zoom = 3;
center = new google.maps.LatLng(31, 121);
break;
default:
zoom = 1;
center = new google.maps.LatLng(35, 5);
}
// Creating the map
map = new google.maps.Map(document.getElementById('map'), options);
google.maps.event.addListener(map, 'click', function(){
clean_icons();
if (infowindow)
infowindow.close();
});
map.setCenter(center);
map.setZoom(zoom);
//bounds = new google.maps.LatLngBounds();
}
这些是我的变量:
var UseridEncr;
var super_category="ATE";
var infowindow;
var map;
var bounds;
var image="../dd/i/green.png";
var image_active="../dd/i/red.png";
var mc ;
var location_changed=true;
var current_region="usa";
var mcOptions = {gridSize:30, maxZoom: 8};
var last_marker;
var last_marker_z;
var DealersData ;
var markers=[];
var markers_selected=[];
claster_markers=[];
var current_view=0;
myData={};
var selected_items=[];
var total_selected=0;
感谢您的及时答复。
我遇到了同样类型的问题。如果您的网页多次包含 maps api,就会发生这种情况。
我在我的案例中检查过,有一个
.js
文件也在调用 maps api,所以请首先检查您是否多次包含 maps api,如果是,请删除该文件。
对于那些在运行时将 Google Map 脚本附加到 DOM 的人,您应该在下次重新附加之前删除 Google Map 的痕迹。
您可以通过以下两个步骤卸载谷歌地图脚本:
declare var window;
function removeGoogleMapScript() {
console.debug('removing google script...');
let keywords = ['maps.googleapis'];
//Remove google from BOM (window object)
window.google = undefined;
//Remove google map scripts from DOM
let scripts = document.head.getElementsByTagName("script");
for (let i = scripts.length - 1; i >= 0; i--) {
let scriptSource = scripts[i].getAttribute('src');
if (scriptSource != null) {
if (keywords.filter(item => scriptSource.includes(item)).length) {
scripts[i].remove();
// scripts[i].parentNode.removeChild(scripts[i]);
}
}
}
}
function addGoogleMapScript() {
removeGoogleMapScript();
console.debug('adding google script...');
let dynamicScripts = [`https://maps.googleapis.com/maps/api/js?v=quarterly&key=123yourApiKey`];
for (let i = 0; i < dynamicScripts.length; i++) {
let node = document.createElement('script');
node.src = dynamicScripts[i];
node.type = 'text/javascript';
node.async = false;
node.charset = 'utf-8';
node.onload = uponFinishLoadingScript; //probably to initialise your map or something
document.head.appendChild(node);
}
}
这些文件中是否包含地图 API?
<script src="../dd/markerclusterer_compiled.js" type="text/javascript"></script>
<script src="../dd/dealers_js.js" type="text/javascript">
我遇到了同样的问题,我终于在functions.php文件中找到了导致问题的代码。
// 自定义脚本和样式 //
wp_enqueue_script( 'wpjobus-google-maps-script', 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false', array( 'jquery' ), '2013-07-18', true );
我在上面添加了 api 密钥。 下面的代码是最终结果。
// 自定义脚本和样式 // wp_enqueue_script( 'wpjobus-google-maps-script', 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&key=MY_API_KEY', array( 'jquery' ), ' 2013-07-18', 正确);
然后我删除了之前添加到包含地图的页面标题中的脚本,瞧!
您为“选项”定义了什么
map = new google.maps.Map(document.getElementById('map'), **options**);
我在变量列表中没有看到它。
搜索 的所有位置(假设您尚未制作本地副本)。我相信您可能已将其添加到 Dealers_js.js 或经销商包含的另一个文件中。
吉姆