는 솔루션의 일종이다.
부하 캔버스 당신이지도 위의 정상적인지도를 표시 할 수 후
var img = new Image();
img.src = 'worldmap.png';
var map = document.getElementById('canvas').getContext('2d');
map.drawImage(img, 0, 0);
에 그 이미지는 (그것은 단지 참조입니다, 및 기타 물건 아래에 숨겨져 할 수있다 - 사용 된 div 및 z-인덱스 그).
은 국가의 플레이어가 그의 위치에서 픽셀 데이터를 얻을 수 있습니다 결정하는
data = map.getImageData(x, y, 1, 1).data;
key = data.join("-"); // something like "255-0-0-255" for red
country = countries[key];
그것이 RGBA 배열해야합니다, 당신은 그 색상에 할당 어느 나라 찾아 볼 수 있습니다. 그래서 내포 된 rgba-values를 키로, 국가 이름을 값으로 배열을 유지해야합니다.
countries = {
"255-0-0-255" : "Russia",
"255-0-255-255" : "China",
...
};
이것은 캔버스 개체가있는 브라우저에서만 작동합니다. 그래서 당신이 아이폰이나 안드로이드에서 이것을하고 있다면 당신은 운이 좋다!
불규칙한 모양의 대상물은 어떻게 구성되어 있습니까? 그들은 각각 하나의 큰 이미지입니까? ... 아니면 색깔있는 DOM 요소로 구성되어 있습니까? – James
우리는 각 국가를 별도의 요소로 계획하고 있지만, 화면에 PNG로 그려지지만 하나의 큰 이미지처럼 쉬울 경우 계획을 수용하도록 변경할 수 있습니다.각 개별 픽셀을 국가에 매핑하고 국가를 얻기 위해 픽셀지도와 플레이어의 위치를 확인하는 아이디어를 생각했는데 효율적입니까? –
효율적인 것은 아니지만 그것을 수행하는 유일한 방법 인 것 같습니다. 사용중인 이미지 유형 (예 : 단색 또는 지형에 따라 다름)의 예를 볼 수 있다면 더 많은 것을 도울 수 있습니다. canvas의 'getImageData'를 사용하여 국가 개체가 이미지의 나머지 부분과 충분히 구별되는 한 특정 픽셀이 국가 내에 있습니다. – James