С API Карт Google (v3) я создал пользовательский тип карты для вымышленного игрового мира. По умолчанию карты, даже пользовательские типы карт, повторяются по горизонтали (см. Рисунок ниже).
Возможно ли, чтобы карта повторялась горизонтально? Для моей карты это не представляет собой планету или сферический мир, поэтому повторение по горизонтали навсегда не имеет смысла. Я выяснил, как просто не загружать плитки для повторяющихся карт слева и справа так:
ОДНАКО, когда вы создаете маркеры, маркеры по-прежнему отображаются для всех повторяющихся карт:
Можно ли повторять повторение маркеров? Или возможно, чтобы карта повторялась вообще? Таким образом, мне не нужно иметь дело с повторением маркеров?
Работа вокруг: ограничение панорамирования за пределами границ карты Я читал различные обходы, которые обсуждают просто ограничение того, как далеко пользователь может панорамировать влево или вправо. Это не сработает для меня, потому что я должен позволить пользователю масштабировать весь выход и просматривать всю карту сразу. Если они увеличивают масштаб до конца, повторяющиеся маркеры все еще видны, что неприемлемо.
Можно ли добавить на карту пучок дополнений? Таким образом между картами имеется большое пространство:
Если бы мне удалось добавить достаточное количество дополнений, то ограничение для панорамирования сработало бы для меня, потому что любые повторяющиеся маркеры могли быть достаточно далеко продвинуты дополнением, которое пользователь никогда не увидит.
Наконец, мой код довольно прост:
(обратите внимание: изображения на карте, которые я использую, еще не доступны в Интернете)
<!DOCTYPE html>
<html style='height: 100%'>
<head>
<link rel="stylesheet" type="text/css" href="normalize.css" />
<style>
html, body { height: 100%;}
#map_canvas { height: 1000px;}
</style>
</head>
<body style='height: 100%'>
<div id="map_canvas"></div>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type='text/javascript'>
var options =
{
getTileUrl: function(coord, zoom)
{
// Don't load tiles for repeated maps
var tileRange = 1 << zoom;
if ( coord.y < 0 || coord.y >= tileRange || coord.x < 0 || coord.x >= tileRange )
return null;
// Load the tile for the requested coordinate
var file = 'images/zoom' + zoom + '/tile_' + zoom + '_' + (coord.x) + '_' + (coord.y) + '.jpg';
return file;
},
tileSize: new google.maps.Size(256, 256),
minZoom: 1,
maxZoom: 9,
radius: 1738000, // I got this from an example in the api, I have no idea what this does
name: 'Map',
};
var mapOptions =
{
center: new google.maps.LatLng(0,0),
zoom: 2,
backgroundColor: '#000',
streetViewControl: false,
mapTypeControl: false
};
var map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions);
var mapType = new google.maps.ImageMapType(options);
map.mapTypes.set('map', mapType);
map.setMapTypeId('map');
var marker = new google.maps.Marker({
position: new google.maps.LatLng(0,0),
map: map,
title: "Test"
});
</script>
</body>
</html>