Добрый день! У меня на карте 2 маркера, один указывает GPS позицию, а другой генерируется с помощью скрипта. Когда я меняю масштаб, маркер, который по GPS имеет правильную позицию, а вот который с помощью скрипта, он находится в том же месте, если бы масштаб не менялся. Как это можно исправить? Может при масштабировании карты нужно вызывать функцию draw()? Если так, то как отловить масштабирование?
//Иконки
var icon_mecop,//текущий игрок-коп
icon_ancop,//другой игрок-коп
icon_megan,//текущий игрок-гангстер
icon_angan;//другой игрок-гангстер
function init()
{
var size = new OpenLayers.Size(32,32); //размер маркера
var offset = new OpenLayers.Pixel(-(size.w/2), -(size.h/2));
icon_mecop = new OpenLayers.Icon(markerMeCopPath, size, offset);
icon_ancop = new OpenLayers.Icon(markerAnCopPath, size, offset);
icon_megan = new OpenLayers.Icon(markerMeGanstaPath, size, offset);
icon_angan = new OpenLayers.Icon(markerAnGanstaPath, size, offset);
if (isgansta)
myicon = icon_megan;
else myicon = icon_mecop;
//собственно, определяем координаты через жпс
navigator.geolocation.getCurrentPosition(
geo_success, //эта функция вызовется в случае успеха определения местоположения
geo_error, //эта функция вызовется, если произойдёт ошибка
{ maximumAge: 0, timeout: 30000, enableHighAccuracy: true }); //Это нужно раскомментировать для тестирования на реальном устройстве
//Обновление текущей позиции
intervalGetCurpos = setInterval(function() {
navigator.geolocation.getCurrentPosition(updatepos,
geo_error, { maximumAge: 0, timeout: 13000, enableHighAccuracy: true});
}, 15000);
intervalallCurPos = setInterval(setupPosition, 15000);
}
function updatepos(position)
{
//alert('success in position determination');
positionUser=position.coords;
putMarker(position.coords.longitude, position.coords.latitude, myicon);
Прорисовка тут:
function setupPosition()
{
var icon = icon_angan.clone();
putMarker(garray[i].lon, garray[i].lat, icon);
}
function putMarker(lon, lat, icon)
{
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(lon + 0.0001, lat + 0.0001)
.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")),icon));
}
Хорошо. Спасибо!
Все же попробую еще по разбираться, может найду причину…
А вообще давно так то смотрю на то, чтобы использовать какую нибудь библиотеку, но блин с этими правами потом попадешь еще на бабло случайно…
Ладно, буду курить! Если справлюсь, напишу свои действия