[英]How to draw polyline on OpenStreetMap with the help of array object in JavaScript?
I want to draw polyline on OpenStreetMap with the help of marker array object currently I am selected all marker(longitude, latitude) values from database and on that marker basis, I want to draw polyline for showing route of the particular user. 我想借助标记数组对象在OpenStreetMap上绘制折线,目前我已从数据库中选择了所有标记(经度,纬度)值,并以该标记为基础,我想绘制折线以显示特定用户的路线。
[window.onload = function GetOSMMap() {
map = new OpenLayers.Map("dvMap");
var mapnik = new OpenLayers.Layer.OSM();
var fromProjection = new OpenLayers.Projection("EPSG:4326"); // Transform from WGS 1984
var toProjection = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection
var zoom = 15;
map.addLayer(mapnik);
var marker = new OpenLayers.Layer.Markers("Markers");
for (i = 0; i < markers.length; i++) {
var data = markers\[i\]
var lonLat = new OpenLayers.LonLat(data.lng, data.lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.addLayer(marker);
marker.addMarker(new OpenLayers.Marker(lonLat));
map.setCenter(lonLat, zoom);
}
var lineLayer = new OpenLayers.Layer.Vector("Line Layer");
map.addLayer(lineLayer);
map.addControl(new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path));
var points = new Array(
new OpenLayers.Geometry.Point(data.lng, data.lat)
);
points.push(lonLat);
var line = new OpenLayers.Geometry.LineString(points);
var style = {
strokeColor: '#0000ff',
strokeOpacity: 0.5,
strokeWidth: 5
};
var lineFeature = new OpenLayers.Feature.Vector(line, null, style);
lineLayer.addFeatures(\[lineFeature\]);
}]
1)Change array variable declaration create simple object of array 1)更改数组变量声明创建简单的数组对象
var points = new Array( new OpenLayers.Geometry.Point(data.lng, data.lat) ); var points = new Array(new OpenLayers.Geometry.Point(data.lng,data.lat)); to var points = new Array();
到var points = new Array(); 2) Change in points.push(lonLat);
2)改变points.push(lonLat); to points.push(new OpenLayers.Geometry.Point(data.lng,data.lat));
到points.push(new OpenLayers.Geometry.Point(data.lng,data.lat)); and pass write this line under marker for loop.
并将此行写在循环标记下。 3) Add one line extra line.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
3)添加一行额外的line.transform(new OpenLayers.Projection(“ EPSG:4326”),new OpenLayers.Projection(“ EPSG:900913”));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.