我有以下javascript。错误报告在第14和22行;说第14行中的“参数列表后面有”Uncaught SyntaxError:missing)和第22行中的“Uncaught ReferenceError:init未定义”。
<html>
<head>
<title>OpenLayers Demo</title>
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script>
function init(){
map = new OpenLayers.Map("basicMap");
var mapnik = new OpenLayers.Layer.OSM();
map.addLayer(mapnik);//add the OSM layer to map
var markers = new OpenLayers.Layer.Markers("Markers");
map.addLayer(markers);
var LonLat = new OpenLayers.LonLat(13.0,47.8);
transform(
new OpenLayers.Projection("EPSG:4326");
map.getProjectionObject();
);
markers.addMarker(new OpenLayers.Marker(LonLat));
map.setCenter(LonLat, 15);
}
</script>
</head>
<body onload = "init()">
<div style = "width: 100%; height: 60%;" id = "basicMap"></div>
</body>
答案 0 :(得分:1)
有些分号不应该是。
transform(
new OpenLayers.Projection("EPSG:4326"),
map.getProjectionObject()
);
这应该使用逗号,因为它们是函数参数。
{{1}}
如果将来发生这种情况,您可以使用代码linting工具,例如jslint:http://www.jslint.com/
答案 1 :(得分:0)
transform(
new OpenLayers.Projection("EPSG:4326"),
map.getProjectionObject()
);
应该修理它。
答案 2 :(得分:0)
第二条错误消息是由第一条引起的:因为<script>
块中应该定义init
包含语法错误,所以无法加载,因此init
从未定义过。因此,当您再向下拨打init()
时,您会收到ReferenceError
。
第一个错误的原因在于:
transform(
new OpenLayers.Projection("EPSG:4326");
map.getProjectionObject();
);
参数由逗号分隔,而不是分号!所以JavaScript假定分号的结尾是这样的:
transform( new OpenLayers.Projection("EPSG:4326");
...因为这意味着来自transform
的parens已打开但未关闭,您会收到此错误。
所以,正确的代码是:
transform(
new OpenLayers.Projection("EPSG:4326"),
map.getProjectionObject()
);
请注意,对于第二个参数,我完全删除了分号(不能用逗号替换它),因为不允许使用尾随逗号。
只是为了理解:基本上,你在这里所做的只是多行版本:
transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
...所以它必须遵循函数调用的常规规则及其参数。