Клуб API Карт

Как изменить положение placemark'а?

Пост в архиве.

Добрый день!

Я новичок на Яндекс картах. Т.е. у меня есть маленький пример http://cheboksary.aapsoftware.ru/map.php который работает, но я хочу сделать следующее: показать движение троллейбусов на карте города. Задача сложная и я начал с простого.

Вот мой код:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=AB8jnkwBAAAABzuVdQMAOUwAuAbZp_Ag0XXzHy8Aa3Th4akAAAAAAAAAAAAWbLKkqfA-6K_KpRwycdeSmkJlhQ==" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function () {
    var map = new YMaps.Map(document.getElementById("YMapsID")
    map.setCenter(new YMaps.GeoPoint(47.25,56.14), 14);
};
       
function f1() {
var placemark = new YMaps.Placemark(new YMaps.GeoPoint(47.25,56.14),{hideIcon: true,draggable: true}
// Добавляет метку на карту
map.addOverlay(placemark);
}       
</script>
</head>

<body>
    <div id="YMapsID" style="width:1600px;height:800px"></div>
    <input type=button name=B1 value="Set" onclick="f1()">
</body>
</html>

Проблема следующая: в функции f1 я обращаюсь к карте по имени map, но Лисичка говорит мне что map неопределен. Тоже и в других браузерах. Как правильно обратиться к карте из других функций JavaScript? Помогите пожалуйста!

Я понимаю, что добавление placemark'а можно и нужно делать внутри


window.onload = function () {

 ...

}

Но как изменить координаты этого placemark'а?

 

1 комментарий
Александр Новиков
28 января 2016, 06:01

Почитайте про глобальные и локальные переменные вообще и в JavaScript в частности.

По существу - у вас переменная map смоздается и используется только внутри обработчика onload.

Чтобы обращаться к этой переменной из любой функции ее надо объявить как глобальную.

Как-то так:

var map;

window.onload = function () {
    map = new YMaps.Map(document.getElementById("YMapsID"));
    map.setCenter(new YMaps.GeoPoint(47.25,56.14), 14);
};