• Katie:
    Ok, so what is RSVP?
    Support:
    In the context of social invitations, RSVP is a request for a response from the invited person or people. It is an initialism derived from the French phrase Répondez s'il vous plaît, literally "Reply if you please" or "Please reply".
  • Katie:
    How do I find out I've been invited?
    Support:
    A black raven will appear on your windowsill, a paper scroll attached to his leg. You'll need to figure out how to take it off. Everything you'll need to know will be written there. Don't forget to send your raven back.
function init() { var myMap = new ymaps.Map('map', { center: [55.7, 37.5], zoom: 9, controls: ['zoomControl'] }), // Создаем коллекцию. myCollection = new ymaps.GeoObjectCollection(), // Создаем массив с данными. myPoints = [ { coords: [55.77, 37.46], text: 'Трактир' }, { coords: [55.66, 37.48], text: 'Кафе' }, { coords: [55.65, 37.42], text: 'Ресторан' }, { coords: [55.64, 37.54], text: 'Музей' }, { coords: [55.54, 37.52], text: 'Библиотека' }, { coords: [55.53, 37.56], text: 'Школа' }, { coords: [55.61, 37.61], text: 'Аптека' }, { coords: [55.80, 37.58], text: 'Бар' }, { coords: [55.71, 37.35], text: 'Институт' }, { coords: [55.74, 37.57], text: 'Университет' }, { coords: [55.58, 37.69], text: 'Больница' }, { coords: [55.57, 37.70], text: 'Цирк' }, { coords: [55.55, 37.64], text: 'Магазин' }, { coords: [55.50, 37.75], text: 'Булочная' }, { coords: [55.81, 37.73], text: 'Полиция' }, { coords: [55.73, 37.68], text: 'Салон красоты' }, { coords: [55.86, 37.76], text: 'Баня' }, { coords: [55.38, 37.69], text: 'Гараж' }, { coords: [55.91, 37.50], text: 'Дом' }, { coords: [55.62, 37.32], text: 'Прачечная' }, { coords: [55.85, 37.41], text: 'Стадион' }, { coords: [55.67, 37.24], text: 'Вокзал' } ]; // Заполняем коллекцию данными. for (var i = 0, l = myPoints.length; i < l; i++) { var point = myPoints[i]; myCollection.add(new ymaps.Placemark( point.coords, { balloonContentBody: point.text } )); } // Добавляем коллекцию меток на карту. myMap.geoObjects.add(myCollection); // Создаем экземпляр класса ymaps.control.SearchControl var mySearchControl = new ymaps.control.SearchControl({ options: { // Заменяем стандартный провайдер данных (геокодер) нашим собственным. provider: new CustomSearchProvider(myPoints), // Не будем показывать еще одну метку при выборе результата поиска, // т.к. метки коллекции myCollection уже добавлены на карту. noPlacemark: true, resultsPerPage: 5 }}); // Добавляем контрол в верхний правый угол, myMap.controls .add(mySearchControl, { float: 'right' }); } // Провайдер данных для элемента управления ymaps.control.SearchControl. // Осуществляет поиск геообъектов в по массиву points. // Реализует интерфейс IGeocodeProvider. function CustomSearchProvider(points) { this.points = points; } // Провайдер ищет по полю text стандартным методом String.ptototype.indexOf. CustomSearchProvider.prototype.geocode = function (request, options) { var deferred = new ymaps.vow.defer(), geoObjects = new ymaps.GeoObjectCollection(), // Сколько результатов нужно пропустить. offset = options.skip || 0, // Количество возвращаемых результатов. limit = options.results || 20; var points = []; // Ищем в свойстве text каждого элемента массива. for (var i = 0, l = this.points.length; i < l; i++) { var point = this.points[i]; if (point.text.toLowerCase().indexOf(request.toLowerCase()) != -1) { points.push(point); } } // При формировании ответа можно учитывать offset и limit. points = points.splice(offset, limit); // Добавляем точки в результирующую коллекцию. for (var i = 0, l = points.length; i < l; i++) { var point = points[i], coords = point.coords, text = point.text; geoObjects.add(new ymaps.Placemark(coords, { name: text + ' name', description: text + ' description', balloonContentBody: '

' + text + '

', boundedBy: [coords, coords] })); } deferred.resolve({ // Геообъекты поисковой выдачи. geoObjects: geoObjects, // Метаинформация ответа. metaData: { geocoder: { // Строка обработанного запроса. request: request, // Количество найденных результатов. found: geoObjects.getLength(), // Количество возвращенных результатов. results: limit, // Количество пропущенных результатов. skip: offset } } }); // Возвращаем объект-обещание. return deferred.promise(); }; ymaps.ready(init);