javascript - 谷歌地图 : addPoints is not defined and too much recursion

标签 javascript html maps

如果我使用下面所示的代码: 1)它工作正常几秒钟,然后谷歌删除了 map 并用错误消息替换它(哎呀!错误..有关更多信息,请参阅控制台日志)。 2)如果我创建一个测试文件,例如 test.html,并粘贴我的代码,它可以正常工作,没有任何问题。 3)但是如果我在我的页面中使用它,它就不起作用(参见1)

我使用jquery-ui,jquery和fancybox..我删除了这些脚本并在我的页面中再次测试,同样的问题!

控制台日志显示: addPoints 未定义 太多的递归

我的代码

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true&amp;key=my-key" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
// Google Map Maker script v.3
// (c) 2012 Richard Stephenson http://www.rpsdigital.com
// http://mapmaker.donkeymagic.co.uk
var map;
var icon0;
var newPoints = new Array();
 
function addLoadEvent(func) { 
	var oldonload = window.onload; 
	if (typeof window.onload != 'function'){ 
		window.onload = func
	} else { 
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
 
addLoadEvent(loadMap);
addLoadEvent(addPoints);
 
function loadMap() {
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
		map.addMapType(G_PHYSICAL_MAP);
		map.enableScrollWheelZoom();
	map.setCenter(new GLatLng( 46.198308213008495, 14.969000816345215), 7);
	map.setMapType(G_PHYSICAL_MAP);
 
 

	for(var i = 0; i < newPoints.length; i++) {
		var point = new GPoint(newPoints[i][1],newPoints[i][0]);
		var popuphtml = newPoints[i][4] ;
		var marker = createMarker(point,newPoints[i][2],popuphtml);
		map.addOverlay(marker);
	}
}
 
function createMarker(point, icon, popuphtml) {
	var popuphtml = "<div id=\"popup\">" + popuphtml + "<\/div>";
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(popuphtml);
	});
	return marker;
}
//]]>
</script>

<div id="map" style="width:330px;height:300px"></div>

最佳答案

问题是,正如控制台试图告诉您的那样,addPoints 函数未定义。

为什么这种行为会以这种方式发生,我不能说 - 可能是因为你的函数 loadMap 并没有真正使用 addPoints ,并且只有在调用 loadMap 函数之后才调用 addPoints (此代码中未定义的 var/reference ) load 事件调度,因为它仅在添加 loadMap 之后添加。因此,一旦达到该值,代码就会停止工作。

在您的代码中,addPoints 未定义,正如我在对您的问题的评论中所写的那样 - 我在谷歌地图 api 文档中找不到它。 通过谷歌搜索,我在 this SO question 中找到了 addPoints这看起来非常像你的代码。 我猜您使用该代码或类似代码来构建您的工具,但在某个时间点删除了 addPoints 函数定义。

由于您似乎根本没有使用 addPoints (它没有在您的代码中定义),我建议您删除该行

addLoadEvent(addPoints);

我预计问题将会消失。

关于javascript - 谷歌地图 : addPoints is not defined and too much recursion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38420898/

相关文章:

javascript - SharePoint 2013 JavaScript OnClick 事件

d3.js - D3js : Automatic labels placement to avoid overlaps?(力斥力)

android - 尝试启动 Google map 导致我的应用程序崩溃

javascript - 为什么这些cookie代码在asp.net mvc中不起作用?

javascript - 在 Javascript 中对图像进行哈希处理

javascript - 我可以从另一个脚本获取变量的值吗?

c# - 在 CSS 中使用人造全高列时修复 anchor

html - 导航栏 CSS 与 Bootstrap CSS 文件冲突?

javascript - MMO 3D 游戏在 HTML5/WebGL 上的可行性

javascript - 如何将 OpenLayers 与 MapGuide 源一起使用