我有一个用户放置一些坐标(纬度/经度)的系统,我需要检查指定的坐标是否在海中。有什么服务可以给我答案。或者可以使用谷歌地图来做到这一点。
答案 0 :(得分:19)
您可以使用Google Maps Geocode API。
如果您的地址在陆地,则响应的result_type将类似于“administrative_area”。如果你在海里,反应将是“natural_feature”。
以下是两个例子:
编辑:回复评论的更多示例:
答案 1 :(得分:15)
我曾经想过这个。
我不会使用网络服务。但我会用一个非常简单的图像。
此图片取自 http://www.vectorworldmap.com/vectormaps/vector-world-map-v2.2-blank.jpg
通过精彩评论编辑
我喜欢这个解决方案,但我不确定地图是完全准确的还是 equirectangular(这将是最容易使用的)。怎么样 这个? naturalearth.springercarto.com/ne3_data/8192/masks/water_8k.png
<强> // END 强>
如果您需要超高分辨率地图,我会得到一张非常大的地图,并将其划分为可以加载的较小图像网格。
如果你需要让这个系统超级快速。 我想这个像素像素可以创建这个东西的数据库,这样你就可以很快地查找它。但是下面这张图片实际上是一个很容易检查或更改的优秀数据库。
你想要海洋和湖泊吗?
很想知道你要去哪里,因为我喜欢这个问题。
约翰。
答案 2 :(得分:5)
扩展John Ballinger,我成功地使用了这个技巧:
在php中:
$lat = your latitude
$lon = your longitude
$im = imagecreatefrompng('http://maps.googleapis.com/maps/api/staticmap?center='.$lat.','.$lon.'&zoom=21&format=png&sensor=false&size=1x1&maptype=roadmap&style=feature:administrative|visibility:off&style=feature:landscape|color:0x000000&style=feature:water|color:0xffffff&style=feature:road|visibility:off&style=feature:transit|visibility:off&style=feature:poi|visibility:off');
//get pixel color, put it in an array
$color_index = imagecolorat($im, 0, 0);
$color_tran = imagecolorsforindex($im, $color_index);
//if, for example, red value of the pixel is 0 we are on land
if($color_tran['red']==0){
//do your thing
echo "we are on land";
}