Javascript OpenLayers添加标记和弹出窗口
我在OpenLayers上遇到了问题。 我的工作代码是:Javascript OpenLayers添加标记和弹出窗口,javascript,html,popup,openlayers,markers,Javascript,Html,Popup,Openlayers,Markers,我在OpenLayers上遇到了问题。 我的工作代码是: <html><body> <div id="mapdiv"></div> <script src="http://www.openlayers.org/api/OpenLayers.js"></script> <script> map = new OpenLayers.Map("mapdiv"); map.addLayer(ne
<html><body>
<div id="mapdiv"></div>
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script>
map = new OpenLayers.Map("mapdiv");
map.addLayer(new OpenLayers.Layer.OSM());
//var results = new OpenLayers.Layer.Text("My Points", { location:"./checkIns_0_view.txt", projection: map.displayProjection});
//map.addLayer(results);
var query = new OpenLayers.LonLat(-122.2928337167, 37.5549570333).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
var markers = new OpenLayers.Layer.Markers("Markers");
map.addLayer(markers);
var size = new OpenLayers.Size(21,25);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('http://openlayers.org/dev/img/marker-blue.png', size, offset);
marker = new OpenLayers.Marker(query, icon);
markers.addMarker(marker);
var zoom=16;
map.setCenter (query, zoom);
</script>
</body></html>
第一行可以编译,但是当我添加第二行时,浏览器不会显示我的地图。
我认为这可能与查询lonLat有关,但我没有必要的OpenLayers技能来找出答案
我将非常感谢您的答复
问候
var popup = new OpenLayers.Popup.FramedCloud("Popup",
myLocation.getBounds().getCenterLonLat(), null,
'We ' +
'could be here. Or elsewhere.',
null,
true // true if we want a close (X) button, false otherwise
);
在您的情况下,您可以使用变量图标来代替空值var popup = new OpenLayers.Popup.FramedCloud("Popup", query, null, "Text", null, true);
map.addPopup(popup, false);
非常感谢marti jrk的回复。明白了,你刚才提到的,但是使用1中的附加参数仍然不起作用。在2中添加false。我在代码中的什么位置添加这两行相关吗?@user251315是的,相关。您应该在map.setCenter()之后添加popup(map.addPopup(popup,true););因此,如果你把它们都放在最后,它应该会起作用。再次非常感谢你。那是我的问题。总是试图在不同的位置插入线条,但我从来不敢在末尾插入,因为(为什么)我认为它可能与最后的地图居中有关。谢谢
var popup = new OpenLayers.Popup.FramedCloud("Popup", query, null, "Text", null, true);
map.addPopup(popup, false);