如果我使用下面显示的代码:
1)比起Google删除地图并用错误消息(哎呀!错误。请参阅控制台日志了解更多信息),它可以工作几秒钟。
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且仅在load事件调用loadMap函数之后才调用addPoints(此代码中未定义的var / reference)分派,因为仅在添加loadMap之后才添加它。因此,一旦到达,代码就会停止工作。

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

由于您似乎根本没有使用addPoints(代码中未定义),因此建议您删除该行

addLoadEvent(addPoints);


我预计问题将会消失。

09-12 03:19