#jquery #highcharts #highmaps
#jquery #highcharts #highmaps
Вопрос:
Я работаю над использованием highcharts с highmaps. Я должен показать детализацию на уровне состояния. Итак, я использую http://www.highcharts.com/maps/demo/latlon-advanced. Мой код выглядит следующим образом :
var baseMapPath = "https://code.highcharts.com/mapdata/";
localStorage.setItem('locationHash', 'countries/us/us-all'),
mapGeoJSON = null;
function change() {
console.log("localStorage : ", localStorage.getItem('locationHash'));
var locationVariable = localStorage.getItem('locationHash') '.js';
var mapKey = locationVariable.slice(0, -3),
javascriptPath = baseMapPath locationVariable,
up = angular.element(document.getElementById('up')),
container = angular.element(document.getElementById('container')),
containerHighcharts = container.highcharts();
if (containerHighcharts) {
containerHighcharts.showLoading('<i class="fa fa-spinner fa-spin fa-2x"></i>');
}
function mapReady(jsonData) {
console.log("mapKey inside mapReady function : ", mapKey);
console.log("Highcharts : ", Highcharts);
console.log("typeof : ", typeof(Highcharts));
mapGeoJSON = Highcharts.maps[mapKey];
var data = jsonData,
match;
// console.log("mapGeoJSON inside mapReady: ", mapGeoJSON);
console.log("data : ", data);
if (/^countries/[a-z]{2}/[a-z]{2}-all$/.test(mapKey)) { // country
var parent = {
desc: 'World',
key: 'custom/world'
};
}
up.html('');
if (parent) {
up.append(
$('<a><i class="fa fa-angle-up"></i> ' parent.desc '</a>')
.attr({
title: parent.key
})
.click(function () {
localStorage.setItem('locationHash', parent.key);
change();
})
);
}
container.highcharts('Map', {
title: {
text: 'Aosis : Highmaps Lat/Long'
},
chartType: 'map',
tooltip: {
pointFormat: '{point.countryName} : {point.count}'
},
mapNavigation: {
enabled: true,
buttonOptions: {
verticalAlign: 'bottom'
}
},
series: [{
name: 'Basemap',
mapData: mapGeoJSON,
borderColor: '#606060',
nullColor: 'rgba(200, 200, 200, 0.2)',
showInLegend: false
}, {
name: 'Separators',
type: 'mapline',
data: Highcharts.geojson(mapGeoJSON, 'mapline'),
color: '#101010',
enableMouseTracking: false,
showInLegend: false
}, {
type: 'mapbubble',
dataLabels: {
enabled: true,
format: '{point.countryName}'
},
name: 'Cities',
data: data,
maxSize: '3%',
color: Highcharts.getOptions().colors[0]
}],
plotOptions:{
series:{
point: {
events: {
// On click, look for a detailed map
click: function () {
console.log("click event");
var key = this.key;
localStorage.setItem('locationHash', 'countries/' key.substr(0, 2) '/' key '-all');
if(!(/-/.test(key)))
change();
else
console.log("Result inside else : ", /-/.test(key));
}
}
}
}
}
});
}
function getLatLongData(){
console.log("Inside getLatLongData function");
$.ajax({
url: 'https://www.highcharts.com/samples/data/jsonp.php?filename=us-capitals.jsonamp;callback=?',
type: 'GET',
dataType: 'json',
success: function(jsonData){console.log("Completed jsonData call. Now calling mapReady function"); mapReady(jsonData)}
});
}
if (Highcharts.maps[mapKey]) {
getLatLongData();
} else {
$.getScript(javascriptPath, getLatLongData);
}
}
//Trigger the change function on page load
change();
Мои исходные файлы highcharts следующие :
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/maps/modules/map.js"></script>
Я получаю сообщение об ошибке:
Ошибка, не перехваченная: ошибка Highcharts # 17: www.highcharts.com/errors/17 .
Комментарии:
1. В примере, на который вы ссылались, используется <script src=» code.highcharts.com/maps/highmaps.js «></script > вместо этого, если highcharts.js
2. Я знаю это, но, как я уже упоминал, я использую highmaps с highcharts, мне нужно использовать maps.js вместо highmaps.js . Это согласно ссылке на официальные документы
Ответ №1:
Серия mapbubble — это расширенная серия bubble, поэтому, если вы загружаете карту как плагин и используете mapbubble, вам также необходимо включить модуль highcharts-more.
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/maps/modules/map.js"></script>
Получаем ошибку 17 -> http://jsfiddle.net/cs0kmz1m
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>
<script src="https://code.highcharts.com/maps/modules/map.js"></script>
Ошибки нет, если включены highcharts-more ->http://jsfiddle.net/cs0kmz1m/1
Ответ №2:
Попробуйте удалить компоненты bower, а затем установить их снова. Сработало для меня
> bower install -g