Как в функции прописать ссылку до папки?

  • epol_pers
  • Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 4 months ago - 6 years 4 months ago #11362 by epol_pers
Как именно прописать ссылку на папку с тайлами в фукции?

function getNormalizedCoord(coord, zoom) {
if (!repeatOnXAxis) return coord;

var y = coord.y;
var x = coord.x;

// tile range in one direction range is dependent on zoom level
// 0 = 1 tile, 1 = 2 tiles, 2 = 4 tiles, 3 = 8 tiles, etc
var tileRange = 1 << zoom;

// don't repeat across Y-axis (vertically)
if (y < 0 || y >= tileRange) {
return null;
}

// repeat across X-axis
if (x < 0 || x >= tileRange) {
x = (x % tileRange + tileRange) % tileRange;
}

return {
x: x,
y: y
};

}


/*
* Main Core
*
*/

window.onload = function() {

// Define our custom map type
var customMapType = new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
var normalizedCoord = getNormalizedCoord(coord, zoom);
if(normalizedCoord && (normalizedCoord.x < Math.pow(2, zoom)) && (normalizedCoord.x > -1) && (normalizedCoord.y < Math.pow(2, zoom)) && (normalizedCoord.y > -1)) {
return zoom + '_' + normalizedCoord.x + '_' + normalizedCoord.y + '.jpg';
} else {
return 'empty.jpg';
}
},
tileSize: new google.maps.Size(256, 256),
maxZoom: 6,
name: 'PS_Bramus.GoogleMapsTileCutter'
});

// Basic options for our map
var myOptions = {
center: new google.maps.LatLng(0, 0),
zoom: 2,
minZoom: 0,
streetViewControl: false,
mapTypeControl: false,
mapTypeControlOptions: {
mapTypeIds: ["custom"]
}
};

// Init the map and hook our custom map type to it
var map = new google.maps.Map(document.getElementById('map'), myOptions);
map.mapTypes.set('custom', customMapType);
map.setMapTypeId('custom');

}
Last edit: 6 years 4 months ago by epol_pers.

Please Log in or Create an account to join the conversation.

More
6 years 4 months ago - 6 years 4 months ago #11365 by Dima
Добрый день.
Тут, в принципе, ничего сложного.
В документации описан принцип создания сложного пользовательского типа карты (во второй части, не с самого начала)

wiki.zhuk.cc/index.php/Zh_GoogleMap_CustomMapType

В Вашем коде есть 2 вещи
- функция получения URL тайла - ее надо ввести в Get Tile URL function
- функция нормализации координат - ее надо ввести в Global scope секцию

Т.е. на закладке Global scope вносите функцию и декларацию переменной
var repeatOnXAxis = false;

function getNormalizedCoord(coord, zoom) {
					if (!repeatOnXAxis) return coord;

					var y = coord.y;
					var x = coord.x;

					// tile range in one direction range is dependent on zoom level
					// 0 = 1 tile, 1 = 2 tiles, 2 = 4 tiles, 3 = 8 tiles, etc
					var tileRange = 1 << zoom;

					// don't repeat across Y-axis (vertically)
					if (y < 0 || y >= tileRange) {
						return null;
					}

					// repeat across X-axis
					if (x < 0 || x >= tileRange) {
						x = (x % tileRange + tileRange) % tileRange;
					}

					return {
						x: x,
						y: y
					};

				}

А вот функцию для получения тайлов надо немного изменить
вместо
function(coord, zoom) {
var normalizedCoord = getNormalizedCoord(coord, zoom);
if(normalizedCoord && (normalizedCoord.x < Math.pow(2, zoom)) && (normalizedCoord.x > -1) && (normalizedCoord.y < Math.pow(2, zoom)) && (normalizedCoord.y > -1)) {
return zoom + '_' + normalizedCoord.x + '_' + normalizedCoord.y + '.jpg';
} else {
return 'empty.jpg';
}
}

надо написать что-то типа
function(coord, zoom) {
var normalizedCoord = getNormalizedCoord(coord, zoom);
var baseURL = 'http://ваш_сайт/папка_карты/';

if(normalizedCoord && (normalizedCoord.x < Math.pow(2, zoom)) && (normalizedCoord.x > -1) && (normalizedCoord.y < Math.pow(2, zoom)) && (normalizedCoord.y > -1)) {
      baseURL += zoom + '_' + normalizedCoord.x + '_' + normalizedCoord.y + '.jpg';
      return baseURL;
} else {
      baseURL += 'empty.jpg';
      return baseURL;
}
}

Don't forget support my developments: post review in JED , donate , help with translation ;)
Last edit: 6 years 4 months ago by Dima.

Please Log in or Create an account to join the conversation.

  • epol_pers
  • Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 3 months ago #11379 by epol_pers
В итоге серый фон и ничего не отображается((
Attachments:

Please Log in or Create an account to join the conversation.

  • epol_pers
  • Topic Author
  • Offline
  • New Member
  • New Member
More
6 years 3 months ago #11380 by epol_pers
Использовал функцию из проекции Галла Петерса

function(coord, zoom) {
var scale = 1 << zoom;

// Wrap tiles horizontally.
var x = ((coord.x % scale) + scale) % scale;

// Don't wrap tiles vertically.
var y = coord.y;
if (y < 0 || y >= scale) return null;

return 'http://сайт/папка/' + zoom +
'_' + x + '_' + y + '.jpg';
}

Please Log in or Create an account to join the conversation.

More
6 years 3 months ago #11388 by Dima
Дайте прямую ссылку на страницу с картой и указанным типом, посмотрю.

Don't forget support my developments: post review in JED , donate , help with translation ;)

Please Log in or Create an account to join the conversation.

Time to create page: 0.105 seconds

Donate


Go to top