检查谷歌地图中的土地或水

时间:2017-12-25 09:34:59

标签: android google-maps

我正在生成随机纬度和经度。但随机经纬度无法找到土地或水。使用谷歌API检查,我找不到,我在谷歌搜索。但我找不到解决方案,请帮帮我。我使用了这个来源(https://onwater.io/users/sign_up)网址。它每分钟只提供15个请求。我需要50纬度和长度来检查它是土地还是水。

1 个答案:

答案 0 :(得分:1)

今天最简单的方法是使用Google Static Map APIStyled Maps:您可以为隐藏所有功能的Lat / Lon坐标创建一个像素地图(尺寸= 1x1)的请求除了water并将water颜色设置为例如纯蓝色(0x0000FF)。像这样的东西

https://maps.googleapis.com/maps/api/staticmap?&center={YOUR_LAT},{YOUR_LON}&zoom={YOUR_ZOOM}&size=1x1&style=feature:all|visibility:off&style=feature:water|visibility:on&style=feature:water|color:0x0000FF&key={YOUR_API_KEY}

然后下载(例如thisVivek Khandelwal):

...

public static Bitmap getGoogleMapThumbnail(double lati, double longi) {
    String URL = "http://maps.google.com/maps/api/staticmap?center=" + lati + "," + longi + "&zoom=15&size=200x200&sensor=false";
    Bitmap bmp = null;
    bmp = getBitmapFromURL(URL);
    return bmp;
}

public static Bitmap getBitmapFromURL(String src) {
    try {
        URL url = new URL(src);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap;
    }
    catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}
...

并测试一个像素的颜色,例如thatRaz答案:

...
int pixel = bitmap.getPixel(x,y);
if (pixel == Color.BLUE) {
   // water!
}
...

如果是蓝色(0x0000FF) - 您的Lat / Lon坐标上有水。

NB!您应该设置适当的缩放级别,并记住整个地球的所有缩放级别都没有地图图块。地图上也可能错过一些水/土。所以,这不是100%正确的解决方案,但希望它有所帮助。