Javascript 操作/在OSM地图中选择一个位置并显示标记
我是OSMAPI新手。(开放式街道地图) 我目前正在搜索一个解决方案,以选择(或突出显示)OpenLayers中的向量。 i、 我正在尝试为用户设置一个位置。该用户可以通过单击地图(特定位置)给出自己的位置,然后需要对这些经度和纬度进行一些操作Javascript 操作/在OSM地图中选择一个位置并显示标记,javascript,openlayers,openstreetmap,Javascript,Openlayers,Openstreetmap,我是OSMAPI新手。(开放式街道地图) 我目前正在搜索一个解决方案,以选择(或突出显示)OpenLayers中的向量。 i、 我正在尝试为用户设置一个位置。该用户可以通过单击地图(特定位置)给出自己的位置,然后需要对这些经度和纬度进行一些操作 JS我试过的代码 function showVehicleMap(){ ltArray = document.getElementById('deviceMonitorRightPaneForm:lat').value.s
JS
我试过的代码
function showVehicleMap(){
ltArray = document.getElementById('deviceMonitorRightPaneForm:lat').value.split(",");
lgArray = document.getElementById('deviceMonitorRightPaneForm:lon').value.split(",");
directionArray = document.getElementById('deviceMonitorRightPaneForm:direction').value.split(",");
map = createMap("deviceMap");
for(var i=0;i<ltArray.length;i++)
{
var lonLat = new OpenLayers.LonLat( lgArray[i] ,ltArray[i] ).transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
map.getProjectionObject() // to Spherical Mercator Projection
);
pointsArray.push(lonLat);
}
//prepare mid point
var latAvg = document.getElementById('deviceMonitorRightPaneForm:latAvg').value;
var lonAvg = document.getElementById('deviceMonitorRightPaneForm:lonAvg').value;
var midpoint = new OpenLayers.LonLat(lonAvg,latAvg).transform( fromProjection, toProjection);
//create Marker
var markers = new OpenLayers.Layer.Markers( "Markers" );
map.addLayer(markers);
//prepare list of markers
markers = addMarkersByDirection(markers, pointsArray, directionArray);
map.zoomToExtent(markers.getDataExtent());
map.setCenter (midpoint, 9);
//
/* ]]> */
}
函数showVehicleMap(){
ltArray=document.getElementById('deviceMonitorRightPaneForm:lat')。value.split(“,”;
lgArray=document.getElementById('deviceMonitorRightPaneForm:lon')。value.split(“,”;
DirectionAry=document.getElementById('deviceMonitorRightPaneForm:direction').value.split(“,”);
map=createMap(“deviceMap”);
对于(var i=0;i*/
}
如何实现它?注册鼠标单击事件以通过鼠标获取位置:
map.events.register('click', map, function handleMapClick(e) {
var clickedLonLat = map.getLonLatFromViewPortPx(e.xy).transform(map.projection, map.displayProjection);
...
// place a OpenLayers.Layer.Marker at clickedLonLat for visual feedback
// for convenience: map.panTo(clicketLonLat);
...
});
有几个例子可以说明如何以交互方式在用户定义的位置设置标记。请参阅或OSM自己的“设置起始位置”功能。你能给出详细的回答吗。@Christophe Roussonw你有关键字,你可以通过API文档获得详细的信息:我已经尝试了你的建议。但是我弄错了“Lon”“Lat.”map.events.register('click',map,function handleMapClick(e){lonLat=self.map.getLonLatFromViewPortPx(e.xy).transform(map.fromProjection,map.toProjection);'prompt(“,lonLat);});'它可能取决于您的投影,也可以查看