Drawing a circle Google Static Maps

后端 未结 7 686
刺人心
刺人心 2020-12-07 23:39

I have a Google Maps Circle drawn on v3 api. When the user has plotted there circle (or polygon if they choose), they can save the data to the server. If the user has picked

7条回答
  •  天命终不由人
    2020-12-08 00:11

    Sharing my C# version

    private string GMapCircle(double lat, double lng, double rad, int detail = 8)
    {
        const string uri = "https://maps.googleapis.com/maps/api/staticmap?";
        var staticMapSrc = "center=" + lat + "," + lng;
        staticMapSrc += "&zoom=16";
        staticMapSrc += "&maptype=satellite";
        staticMapSrc += "&key=[YOURKEYHERE]";
        staticMapSrc += "&size=640x426";
        staticMapSrc += "&path=color:0xff0000ff:weight:1";
    
        const int r = 6371;
        const double pi = Math.PI;
    
        var latAux = (lat * pi) / 180;
        var longAux = (lng * pi) / 180;
        var d = (rad / 1000) / r;
    
        var i = 0;
    
        if (rad > 0)
        {
            for (i = 0; i <= 360; i += detail)
            {
                var brng = i * pi / 180;
    
                var pLat = Math.Asin(Math.Sin(latAux) * Math.Cos(d) + Math.Cos(latAux) * Math.Sin(d) * Math.Cos(brng));
                var pLng = ((longAux + Math.Atan2(Math.Sin(brng) * Math.Sin(d) * Math.Cos(latAux), Math.Cos(d) - Math.Sin(latAux) * Math.Sin(pLat))) * 180) / pi;
                pLat = (pLat * 180) / pi;
    
                staticMapSrc += "|" + pLat + "," + pLng;
            }
        }
        else
        {
            //TODO - Add marker
        }
    
        return uri + staticMapSrc;
    }
    

提交回复
热议问题