我找到了所有国家/地区边框的形状数据和一个处理它的类,我编写了一个脚本,将经度和纬度转换为图像上的像素位置,并使用{{1 }和imagefilledpolygon
。一切都很好,除了:
1)我有一个$ scale变量,我可以改变。在$ scale = 1时,图像为360x180像素(1像素= 1度纬度/经度)。理想情况下,我想要的最终图像大约是$ scale = 2(720x360),但是1像素厚的边线看起来非常厚。所以我认为最好的解决方案是以$ scale = 10生成地图,然后调整生成的图像的大小。问题是imageline
在调整大小时没有抗锯齿,它给我留下了一个非常锯齿状的图像,我该如何调整大小和抗锯齿?
2)生成国家多边形的点数很多。计划是使用相同的代码生成HTML图像映射,以使国家成为链接。但是我担心目前图像映射的点太多(文件大小可能太大)。我最初的方法是跳过x点数,这会导致一些成功。如果我在10分中处理1,我会得到一个可接受的结果。理想情况下,我会更少......当我尝试40分之一时,我发现一些国家边界重叠,各国之间存在一些差距(但一些较为繁忙的海岸线看起来更好)。在保持合理的准确度的同时减少点数的明智方法是什么?
如果有人有兴趣,我会发布代码(一旦完成。)
答案 0 :(得分:2)
答案 1 :(得分:0)
所以我没有任何代码,更多的只是你的第二个问题的想法。生成地图的类可以采用x / y坐标并确定您所在的国家/地区吗?
如果可以的话,可以避免使用图像映射,只需使用javascript来确定点击的x / y坐标是什么。将其解析为一个位置并像平常一样对其进行操作。当然,这当然是如果javascript被关闭它将无法正常工作。
虽然听起来很整洁。
答案 2 :(得分:0)
解决了第一个:
imagecopyresampled是我需要的功能而不是imagecopyresized
答案 3 :(得分:0)
对于问题的第二部分,您需要做的不是每10点使用一次,而只使用向地图添加内容的那些。如果距离最后一个渲染点的某个阈值距离,您可以尝试仅使用一个点。这意味着在较密集的区域使用较少的点,但是当它们间隔开时,您可以根据需要使用多个点。