Я пытаюсь использовать инфобокс в качестве всплывающей подсказки. Я хочу, чтобы инфобокс появлялся на кнопке, над которой мышь висела выше.Bing Maps v8 - Infobox не отображается в ожидаемом месте, когда карта уменьшена.
Эта функция работает нормально, когда карта достаточно увеличена. Однако, когда карта уменьшена, инфобокс иногда появляется с порта представления (инфобокс ведет себя так, как если бы карта была переведена горизонтально).
Это мое подозрение, что карта просто оборачивать на себя, потому что это масштаб изображения почти весь путь. Возможно, это означает, что на холсте карты есть дубликаты координат, хотя они не отображаются в порт представления.
Пуговицы с координатами, которые отображаются только один раз на карте, показывают инфобокс в правильном месте.
Может ли кто-нибудь пролить свет на это? Любая помощь приветствуется.
Я включил базовую версию моего кода ниже.
var map;
function loadMapScenario() {
map = new Microsoft.Maps.Map(document.getElementById('myMap'), {
credentials: 'api key',
maxZoom: 2,
enableSearchLogo: false,
disableBirdseye: true,
showDashboard: false,
showMapLabel: true,
showScalebar: false,
disablePanning: true,
disableZooming: true,
disableKeyboardInput: true,
disableMouseInput: false,
disableTouchInput: true,
disableUserInput: false
});
var pushpins = Microsoft.Maps.TestDataGenerator.getPushpins(10, map.getBounds());
var infoBox = new Microsoft.Maps.Infobox(pushpins[0].getLocation(), { title: 'title',
description: 'description', showCloseButton: false });
infoBox.setMap(map);
for (var i = 0; i < pushpins.length; i++) {
var pushpin = pushpins[i];
Microsoft.Maps.Events.addHandler(pushpin, "mouseover", function (e) {
infoBox.setLocation(e.target.getLocation());
});
}
map.entities.push(pushpins);
}
<!DOCTYPE html>
<html>
<head>
<title>Bing Maps Full Width</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
</head>
<body>
<div id='myMap' style='width: 100%; height: 500px;'></div>
<script type='text/javascript' src='js/maps.js'></script>
<script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=release&callback=loadMapScenario' async defer></script>
</body>
</html>
EDIT
Удаление TestDataGenerator в пользу жестких закодированных значений координат дает ту же проблему.
Обновлено JS:
map = new Microsoft.Maps.Map(document.getElementById('myMap'), {
credentials: 'api key',
maxZoom: 2,
disableBirdseye: true,
showDashboard: false,
showMapLabel: true,
showScalebar: false,
disablePanning: true,
disableZooming: true
});
var pushpins = [
new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(-28.14, -79.08), null),
new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(-28.14, 108.51), null),
new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(-28.14, 95.03), null),
new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(-28.14, -134.58), null)
];
Большое спасибо за ваш ответ скорейшего rbrundritt, и спасибо за ваши советы по удалению ненужных параметров карты. К сожалению, моя проблема связана не с TestDataGenerator. Я добавил редактирование, чтобы продемонстрировать проблему, используя жестко закодированные координаты, см. Второй снимок экрана. –
Я не могу воспроизвести проблему, используя массив нажатых кнопок. Он отлично работает для меня. Я вижу только проблему с TestDataGenerator, которая заключается в том, что не все pushpins визуализируются, поэтому инфобокс выглядит так, как будто он не в том месте. – rbrundritt
Я работаю с Chrome.Ваш последний комментарий вдохновил меня попробовать это в другом браузере, и действительно он отлично работает с Internet Explorer! Затем я попросил моего коллегу попробовать его, его результаты были противоположными (работает в Chrome, разбивается на IE). Излишне говорить, что я в тупике. –