При масштабировании маркер находится в другом месте

Добрый день! У меня на карте 2 маркера, один указывает GPS позицию, а другой генерируется с помощью скрипта. Когда я меняю масштаб, маркер, который по GPS имеет правильную позицию, а вот который с помощью скрипта, он находится в том же месте, если бы масштаб не менялся. Как это можно исправить? Может при масштабировании карты нужно вызывать функцию draw()? Если так, то как отловить масштабирование?

Спасибо!

ВАУ! Вопрос из вакуума оО

вы хоть напишите, где у вас есть 2 маркера, пример/ссылку/скриншот.
Какое ПО.

Клуб гадалок и астральных магов по другому адресу находиться.

Ну дак если тут пишу, значит на OSM.
Хорошо. Сейчас 2 изображения кину

На самом деле они находятся на одном месте

ПО - Браузер Chrome

OSM? Это лишь база данных.
Скриншот какой-то не ясный, чем карта то создана?

gadalky.ru


//Иконки
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));
}

garray - Это массив маркеров с координатами

Может хотя бы кто-нибудь подскажет как отловить событие масштабирования. Тогда можно там попробовать my_icon.draw(); может это поможет

Вот кстати ссылка на подобную проблему.
Может парень лучше там объяснил:
http://osgeo-org.1560.n6.nabble.com/Markers-move-around-when-zooming-td4977035.html

А сказать что OL сложно было? Библиотек для работы с картами ОСМ куча. Юзайте leaflet и проблем не будет :slight_smile:

Ну дак я хз, что нужно было так сказать)) leaflet является абсолютно бесплатной даже в коммерческих проектах?

https://github.com/CloudMade/Leaflet/blob/master/LICENSE
один из вариантов нормальной BSD лицензии, если я ничего не путаю

Хорошо. Спасибо!
Все же попробую еще по разбираться, может найду причину…
А вообще давно так то смотрю на то, чтобы использовать какую нибудь библиотеку, но блин с этими правами потом попадешь еще на бабло случайно…

Ладно, буду курить! :slight_smile: Если справлюсь, напишу свои действия