Основная идея заключается в том, что люди будут наводить курсор на определенные регионы, и они загорятся, и произойдет событие. показывает некоторый контент.
Я настроил карту с помощью Mapbox, а затем сначала получил некоторые данные для точек.
Идем сюда, чтобы создать шейп-файл — http://www.gadm.org/country
А затем перейдите сюда, чтобы преобразовать этот файл в файл json - http://www.mapshaper.org/< /p>
Затем я загружаю данные на карту через Mapbox и вот мой результат! (код ниже) - http://dev.touch-akl.com/nzmap/
Как видите, благодаря загруженным мной данным, это почти идеально след страны, единственная проблема в том, что все регионы при наведении кажутся ОДНИМ объектом.
Код: Выделить всё
$.ajax({
url: '/nzmap/js/nzmap.json',
dataType: 'json',
success: function load(data) {
// set up the regions based on the JSON data and then call the styles and the hovers
var regions = L.geoJson(data, {
style: getStyle,
onEachFeature: onEachFeature
}).addTo(map);
// selects used to style the regionsLayer
function getStyle(feature) {
return {
weight: 2,
opacity: 0.1,
color: 'black',
fillOpacity: 0.7,
fillColor: 'red'
};
}
// combine the mouse in and mouse out?
function onEachFeature(feature, layer) {
layer.on({
mousemove: mousemove,
mouseout: mouseout
});
}
// mouse over change the layer styles
function mousemove(e) {
var layer = e.target;
// highlight feature
layer.setStyle({
weight: 3,
opacity: 0.3,
fillOpacity: 0.9
});
if (!L.Browser.ie && !L.Browser.opera) {
layer.bringToFront();
}
}
//mouse out reset the style
function mouseout(e) {
regions.resetStyle(e.target);
}
}
});
Похоже, что некоторые полигоны являются «мультиполигонами», а некоторые — отдельными. Мне удалось создать новую версию карты, используя всего один регион, и выглядит она так - http://dev.touch-akl.com/nzmap2/
Мой Функция для этого практически такая же, за исключением того, что я разделил регион и использовал файл JSON, содержащий только координаты этого региона.
Это файл JSON для этот пример - http://dev.touch-akl.com/nzmap2/js/waikato.json
Итак, где я застрял, так это... Есть ли способ отформатировать исходный файл JSON таким образом, чтобы каждый регион оставался отдельным объектом для наведения? И если да, то как я могу изменить способ настройки карты, чтобы получить желаемый результат?
Похоже, я мог бы создать отдельный json-файл для каждого региона как я делаю со вторым примером, но это не похоже на правильный способ сделать это, застрял на несколько дней, поэтому буду благодарен за любую помощь!
Подробнее здесь: https://stackoverflow.com/questions/269 ... formatting
Мобильная версия