Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
-
ArtIntellAnd
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 08 сен 2011, 06:46
- Репутация: 0
Сообщение
ArtIntellAnd »
Привет всем, использую open layers не могу никак разобраться почему не выводится вектор и как привязать его к координатам на OSM
Код: Выделить всё
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
<script type="text/javascript">
var map;
var vectors;
function init(){
map = new OpenLayers.Map ("map", {
controls:[
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.Attribution()],
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
maxResolution: 156543.0399,
numZoomLevels: 16,
units: 'm',
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326")
} );
layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
map.addLayer(layerMapnik);
var lonLat = new OpenLayers.LonLat(104.25768, 52.263542).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter (lonLat, 15);
vectors = new OpenLayers.Layer.Vector(
"Simple Geometry",
{
styleMap: new OpenLayers.StyleMap({
"default":
{
externalGraphic: "tram.png",
graphicHeight: 30,
graphicYOffset: 30,
rotation: "${angle}"
},
})
}
);
map.addLayers(vectors);
var features = [];
features.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(104.25768, 52.263542), {angle: 90} ));
vectors.addFeatures(features);
};
</script>
</head>
<body onload="init()">
<div id="map"></div>
</body></html>
-
ArtIntellAnd
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 08 сен 2011, 06:46
- Репутация: 0
Сообщение
ArtIntellAnd »
Вывел вектор, но почему он не привязывается к OSM??
Код: Выделить всё
<html>
<head>
<title>OpenLayers Example</title>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
</head>
<body>
<div style="width:800px; height:800px" id="map"></div>
<script defer="defer" type="text/javascript">
var map = new OpenLayers.Map ("map", {
controls:[
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.Attribution()],
maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
maxResolution: 156543.0399,
numZoomLevels: 16,
units: 'm',
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326")
} );
layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
map.addLayer(layerMapnik);
var vectorLayer = new OpenLayers.Layer.Vector("Vector");
var feature = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(104.25768, 52.263542),
{some:'data'},
{externalGraphic: 'tram.png', graphicHeight: 21, graphicWidth: 16, rotation: 90});
vectorLayer.addFeatures(feature);
map.addLayer(vectorLayer);
var lonLat = new OpenLayers.LonLat(104.25768, 52.263542).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
map.setCenter (lonLat, 15);
</script>
</body>
</html>
-
Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Сообщение
Mavka »
Try this:
Код: Выделить всё
var lay_osm = new OpenLayers.Layer.OSM.Mapnik('Mapnik',
{isBaseLayer: true, sphericalMercator: true}
);
лангольеры под окном жрали время ом-ном-ном
-
ArtIntellAnd
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 08 сен 2011, 06:46
- Репутация: 0
Сообщение
ArtIntellAnd »
Не помогло

Всё равно вектор стоит на нулевых координатах
-
Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Сообщение
Mavka »
При new OpenLayers.Geometry.Point или сами перепроецируйте или попробуйте в параметры слоя добавить проекцию:
Код: Выделить всё
var vectorLayer = new OpenLayers.Layer.Vector("Vector", {
projection: new OpenLayers.Projection("EPSG:4326")
});
лангольеры под окном жрали время ом-ном-ном
-
ArtIntellAnd
- Интересующийся
- Сообщения: 26
- Зарегистрирован: 08 сен 2011, 06:46
- Репутация: 0
Сообщение
ArtIntellAnd »
О

всё, помогло, спасибо большое. А как перерисовывать вектор? Написал вот код, ток не работает

Или этот вопрос в отдельную тему
Код: Выделить всё
<html>
<head>
<title>OpenLayers Example</title>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
<script defer="defer" type="text/javascript">
function init()
{
var map = new OpenLayers.Map('map');
layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", {layers: 'basic'});
map.addLayer(layerMapnik);
layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
map.addLayer(layerTilesAtHome);
layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("CycleMap");
map.addLayer(layerCycleMap);
map.setCenter(new OpenLayers.LonLat(104,52) // Центр карты
.transform(
new OpenLayers.Projection("EPSG:4326"), // преобразование из WGS 1984
new OpenLayers.Projection("EPSG:900913") // в Spherical Mercator Projection
), 12 // Уровень масштаба
);
map.addControl(new OpenLayers.Control.LayerSwitcher());
var vectorLayer = new OpenLayers.Layer.Vector("Overlay");
var feature = new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(104, 52).transform(
new OpenLayers.Projection("EPSG:4326"), // преобразование из WGS 1984
new OpenLayers.Projection("EPSG:900913")) // в Spherical Mercator Projection
,
{some:'data'},
{externalGraphic: 'tram.png', graphicHeight: 50, graphicWidth: 50, rotation: 90});
vectorLayer.addFeatures([feature]);
map.addLayer(vectorLayer);
new_vector();
}
</script>
<script type="text/javascript">
function new_vector()
{
var lon = 102;
var lat = 53;
var newPoint = new OpenLayers.LonLat(lon, lat).transform(
new OpenLayers.Projection("EPSG:4326"),
new OpenLayers.Projection("EPSG:900913"));
feature.geometry.x = lonlat.lon;
feature.geometry.y = lonlat.lat;
feature.style.rotation = 45;
vectorLayer.drawFeture(feature);
}
</script>
</head>
<body onload = 'init()'>
<div style="width:600px; height:600px" id="map"></div>
</body>
</html>
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя