Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.04.2020, 02:03
Кандидат Javascript-наук
Отправить личное сообщение для biryukovm Посмотреть профиль Найти все сообщения от biryukovm
 
Регистрация: 13.12.2013
Сообщений: 110

Яндекс карта - как добавть метку на карте отдельной функцией
Привет всем.
Голову уже сломал ничего не получается
Подскажите как добавить метки в не функции карты
Внутри функции карты есть "addMarkers " он работает , а мне надо чтоб вне была функция добовления

Пример отдельной функцией не получается function test2 () {
при каждом срабатывании функции test2 () ну или я их размножу с разными массивами , чтоб добавлялись метки

Подскажите, код мой ниже


<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=windows-1251" />
	<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&amp;apikey=74c63257-6b31-44f8-9def-5768c734d1a5" type="text/javascript"></script>
	<script src="https://yandex.st/jquery/2.2.3/jquery.min.js" type="text/javascript"></script>
    
	<script type="text/javascript">

ymaps.ready(function () {
    var myMap = new ymaps.Map('map', {
		center: [43.238439,76.94549],
        	zoom: 16,
		behaviors: ['default', 'scrollZoom']},
	{searchControlProvider: 'yandex#search'}
);

	//Переназначение кнопок	
	$('#addMarkers').bind('click', addMarkers);
	$('#removeMarkers').bind('click', removeMarkers);

	// Создаем кластеризатор c красной иконкой (по умолчанию используются синяя).
	// и добавляем кластеризатор на карту.
	var clusterer = new ymaps.Clusterer({preset: 'islands#redClusterIcons'});
	myMap.geoObjects.add(clusterer);

	// Создаем коллекцию геообъектов.
	// и добавляем коллекцию геообъектов на карту.
	collection = new ymaps.GeoObjectCollection();
	myMap.geoObjects.add(collection);











	//+-----------------------------+
	//| Генерация меток на карте    |
	//+-----------------------------+
	function addMarkers () {
		bounds = myMap.getBounds();

        //+---------------------------------------------+
		//| Генерируем метки из javascript-массив меток	|
		//+---------------------------------------------+
	        points = [
	            	[43.2399,76.9323,11], [43.2355,76.9383,22], [43.2383,76.9321,33], [43.2422,76.9388,44], 
			[43.2368,76.9351,55], [43.2405,76.9526,66], [43.2399,76.9394,77], [43.2358,76.9434,88] 
	        ]

var newPlacemarks = [];
for(var i = 0, len = points.length; i < len; i++) {
myPlacemark = new ymaps.Placemark([points[i][0],points[i][1]], {iconContent: points[i][2],balloonContent: 'Содержимое балуна'}, {preset:'islands#blueStretchyIcon'});
newPlacemarks.push(myPlacemark);
}

		// Размер ячейки кластеризатора = 80.
		clusterer.options.set({gridSize: 80});

		// Флаг, показывающий, нужно ли кластеризовать объекты.            
		useClusterer = document.getElementById("useClusterer").checked;
	        if (useClusterer) {

			// Если используется кластеризатор, то добавляем кластер на карту,
			// Добавлеяем массив меток в кластеризатор.
			clusterer.add(newPlacemarks);

	        } else {

			// если кластеризатор не используется 
			// добавляем на карту коллекцию геообъектов.
			for (var i = 0, l = newPlacemarks.length; i < l; i++) {
        	        	collection.add(newPlacemarks[i]);
			}
	        }

		//Спозиционируем карту так, чтобы на ней были видны все объекты.
		myMap.setBounds(clusterer.getBounds(), {checkZoomRange: true});

	}

	//+-----------------------------+
	//| Удаление всех меток с карты	|
	//+-----------------------------+
	function removeMarkers () {        
        	clusterer.removeAll();	// Удаляем все  метки из кластеризатора.        
		collection.removeAll();	// Удаляем все метки из коллекции.
    	}


	

});

function test2 () {
    ymaps.addMarkers ();
    
    
/*var newPlacemarks = [];
myPlacemark = new ymaps.Placemark([43.2399,76.9394], {iconContent: '77',balloonContent: 'Содержимое балуна'}, {preset:'islands#blueStretchyIcon'});
newPlacemarks.push(myPlacemark);

//ymaps.clusterer.add(newPlacemarks);

ymaps.myMap.geoObjects.add(newPlacemarks);
collection = new ymaps.GeoObjectCollection();
ymaps.myMap.geoObjects.add(collection);*/


}
	</script>
</head>

<body style="margin: 0px;padding: 0px;">

	<input type="button" value="Тест 1" onclick="test1();return false;" >
	<input type="button" value="Тест 2" onclick="test2();return false;" >

	<BR>

	<input type="checkbox" 				id="useClusterer" checked> Использовать кластеризатор
	<input type="button" value="Добавить на карту" 	id="addMarkers">
	<input type="button" value="Удалить все метки" 	id="removeMarkers">
	<input type="textbox" 				id="id_points" value="[43.2399,76.9323,11], [43.2355,76.9383,22], [43.2383,76.9321,33], [43.2422,76.9388,44],[43.2368,76.9351,55], [43.2405,76.9526,66], [43.2399,76.9394,77], [43.2358,76.9434,88]">


	<div id="map" style="position:fixed;width:100%; height:100%"></div>
</body>

</html>
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2020, 13:14
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

var mapPromise = new Promise(function (resolve, reject) {
    ymaps.ready(function () {
        var mapInstance = new ymaps.Map('map', {
            center: [43.238439, 76.94549],
            zoom: 16,
            behaviors: ['default', 'scrollZoom']
        }, {searchControlProvider: 'yandex#search'});
        
        resolve(mapInstance);
    });
});

function addMarkers() {
    mapPromise.then(function (mapInstance) {
        // mapInstance - ссылка на инстанс я.карт
        // используя mapInstance добавляйте на карту нужные элементы
    });
};


P.S. касаемо вашего форматирования: https://beautifier.io/
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Добавить яндекс карту на сайт и метку Alex351960 Элементы интерфейса 12 30.08.2013 20:39
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Яндекс карта и наложение объектов Rembrant Элементы интерфейса 3 08.11.2011 17:25
Как вывести возвращаемое функцией значение не через модальное окно? Bandicoot Общие вопросы Javascript 1 10.03.2011 18:34