Я новичок, работающий над его навыками переднего конца, и я разрабатываю свой собственный веб-сайт для изучения. Я пытаюсь реализовать карту, используя API Mapbox, и я не могу получить стиль окна описания, которое я использую на карте.Mapbox map styling for description box
Карта находится в нижней части. Теперь мне удалось разместить скрытое поле описания на карте. Когда щелкнут маркер на карте, скрытое свойство будет удалено, и при щелчке карты он будет добавлен обратно.
map.css
#map {
width:100%;
height: 500px;
}
pre#description{
position: relative;
top: -100px;
left: 20px;
padding:5px 10px;
background: rgba(0,0,0,0.5);
color: #fff;
font-size: 11px;
line-height: 18px;
border-radius: 5px;
max-width: 25%;
overflow-x: hidden;
overflow-y: visible;
}
map.js
L.mapbox.accessToken = 'pk.eyJ1Ijoicm9oYW4wNzkzIiwiYSI6IjhFeGVzVzgifQ.MQBzoHJmjH19bXDW0b8nKQ';
var map = L.mapbox.map('map', 'examples.map-i86nkdio')
.setView([30, 60])
.on('click', function(){
$("#description").addClass('hidden');
});
L.marker([28.612896, 77.177275], {
icon: L.mapbox.marker.icon({
'marker-size': 'large',
'marker-symbol': 'warehouse',
'marker-color': '#2880CA'
}),
title: 'My Location'
})
.on('click', function(){
$("#description").removeClass('hidden').empty().append('My Location');
})
.addTo(map);
L.marker([51.081482, 10.300311], {
icon: L.mapbox.marker.icon({
'marker-size': 'large',
'marker-symbol': 'circle-stroked',
'marker-color': '#74DF00'
}),
title: 'Social Accounting System'
})
.on('click', function(){
$("#description").removeClass('hidden')
.empty()
.append('Social Accounting System developed using Laravel + Bootstrap.Project includes different user roles performing a variety of operations such as transferring commodities and selling them on the market');
})
.addTo(map);
L.marker([22.281385, 114.171317], {
icon: L.mapbox.marker.icon({
'marker-size': 'large',
'marker-symbol': 'circle-stroked',
'marker-color': '#74DF00'
}),
title: 'Social Accounting System'
})
.on('click', function(){
$("#description").removeClass('hidden')
.empty()
.append('AngulAir was a demo project developed to show basic CRUD operations performed on the front end using AngularJS');
})
.addTo(map);
map.fitBounds([
[22.281385, 114.171317],
[51.081482, 10.300311]
]);
Проблема в том, что я не очень хорошо с CSS, и я пытаюсь позиционировать поле описания на вершине слева от верхнего правого. Я успешно разместил его в левом нижнем углу, но всякий раз, когда появляется окно, в нижней части карты появляется белое пространство.
Кроме этого, на коробке была горизонтальная прокрутка, но мне нужен вертикальный свиток. Поэтому я сделал overflow-x: hidden
и overflow-y: visible
. Теперь горизонтальная прокрутка выключена, но мне нужно обернуть текст вертикальным прокруткой.
А также я решил, что буду использовать max-width: 25%
, чтобы он реагировал на все порты просмотра. Есть лучший способ сделать это?
Как выполнить эти задачи?
Хорошо, так что я использовал некоторые из кода и поставить контроль на месте. Единственная проблема заключалась в том, что когда я нажал на маркер, ничего не появилось, поэтому я проверил консоль, и он говорит: «TypeError: myCustomControl.setContent не является функцией». Любая идея, что может пойти не так? – Rohan
Вы назначили элемент управления переменной 'myCustomControl'? 'var myCustomControl = new MyCustomControl(). addTo (map);' Вам не нужно называть его 'myCustomControl', вы можете его назвать' x': 'var x = new MyCustomControl() .addTo (map); ', а затем используйте' x.setContent ('abc') '; – iH8
Yup. Я понял, что достаточно скоро, и я это сделал. 'var myCustomControl = map.addControl (новый MyControl());' Все еще не работает! :/ – Rohan