Самый простой способ - обработать все изображение как сетку 11k на 11k с (0,0) в верхнем правом углу. Тогда штифт будет расположен в точке (x, y). Затем, когда вы масштабируете изображение, вы рассматриваете новый вид как подмножество основной сетки.
Например, он может начинаться с (5000, 3500) и быть 500 на 500 пикселей. Затем, если булавка находится в этих координатах, вы вычисляете, где ее разместить.
Допустим, у вас есть два вывода: {(5230, 3550), (5400, 3700)}.
Теперь, если ваш масштаб увеличен на 5000, 3500 и порт просмотра 500x500, ваши местоположения контактов будут:
{(230, 3550), (5400, 3700)}
То, как вам нужно будет выполнять переводы, будет зависеть от того, насколько точно вы будете обрабатывать масштабирование / панорамирование, но это должно быть общей идеей.