Добрый день! У меня вопрос такой, имеется карта, если посмотреть код, то координаты выставляются в самом скрипте, как эти же координаты выводить из JSON файла?
Как сейчас
Как нужно
Данные как видно, я уже вынес в отдельный файл, но как забрать координаты, до этого не могу додуматься(
Использую вот это решение , там тоже массив, а нужен как вы поняли из фала.
Подскажите пожалуйста
Данную проблему решил следующим образом.
function init() {
var myMap = new ymaps.Map('msk_map',{
center: [55.7, 37.5],
zoom: 9,
controls: ['zoomControl']
}),
myCollection = new ymaps.GeoObjectCollection();
$.getJSON('js/data.json', function(data) {
for (var i in data.departments) {
//Именно тут указываем координаты
myPoints = [{
coords: [
data.departments[i].lat, // широта
data.departments[i].lon // Долгота
],
text: data.departments[i].title
}]
// Перебор
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
}
});
}
// Провайдер данных для элемента управления 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: '<p>' + text + '</p>',
boundedBy: [coords, coords]
}));
}
deferred.resolve({
// Геообъекты поисковой выдачи.
geoObjects: geoObjects,
// Метаинформация ответа.
metaData: {
geocoder: {
// Строка обработанного запроса.
request: request,
// Количество найденных результатов.
found: geoObjects.getLength(),
// Количество возвращенных результатов.
results: limit,
// Количество пропущенных результатов.
skip: offset
}
}
});
return deferred.promise();
}
});
// Заполняем коллекцию данными.
// Возвращаем объект-обещание.
};
ymaps.ready(init);
Пример JSON файла
{
"new" : "test" ,
"departments":
[
{
"lat": "55.791901",
"lon": "37.626301",
"title": "СУЩЁВСКИЙ"
}
]
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
как нажать к примеру на кнопку на чужом сайте <span class="left_label inl_bl">кнопка</span>со своего ресурса или локального компьютера с помощью javascript?...
Суть проблемы такова, что при использовании интерполяции, gulp выдает ошибку следующего содержания
Доброго времени суток! Проблема в следующем, есть страница, которая автоматически обновляется сразу после загрузкиВсё работает, однако,...