На вашей связанной карте вы можете видеть, что каждая область определяется полигонами, представленными массивом вершин. (Если вы этого не видите, посмотрите на источник html, и тогда вы увидите это.) В Интернете можно найти много дискуссий об алгоритмах, которые могут определить, находится ли точка внутри многоугольника, описанного таким образом. Вот одно из обсуждений, которое стоит посмотреть на , и прежде чем разочароваться в его длине (оно очень тщательное), посмотрите на раздел под названием The "Crossing Count" Algorithm
. Это довольно простой метод по сравнению с некоторыми другими, которые я видел. Все сводится к тому, чтобы определить, пересекаются ли линии, и подсчитать, сколько ребер многоугольника пересекается с лучом.
Вам нужно проверять точку касания на каждом многоугольнике, пока не найдете тот, который находится внутри. Одна вещь, которая может быть полезна - это сначала проверить, находится ли точка касания внутри ограничительной рамки, определяемой значениями min x, max x, min y и max y каждого массива вершин каждого многоугольника. Если это не внутри ограничительной рамки, то это не внутри многоугольника.
Что касается определения события касания и его местоположения, посмотрите на мой ответ на этот вопрос , в котором рассказывается, как определить, где на экране произошло касание (используя touch: locationInView :).
Я не знаю, намереваетесь ли вы увеличивать и уменьшать ваши изображения, но это добавит некоторые сложности к вашей работе. Если этот ответ не очень помогает, не могли бы вы предоставить больше информации о том, что вы пытаетесь сделать?