Javascript 在谷歌地图上的特定位置绘制标记

Javascript 在谷歌地图上的特定位置绘制标记,javascript,google-maps,Javascript,Google Maps,我已经使用GoogleMapAPI javascript创建了一个小工具。它以地名作为输入,在提交表单时,会在该位置放置标记。这是非常基本的用法。但我想实现的是 以该位置的经纬度为基准,将其作为中心的标记(已完成) 将一个标记放在距离中心10英里处的顶部位置 将一个标记放置在距离中心10英里的底部位置 将一个标记放在距离中心10英里的左侧位置 将距离中心10英里的一个标记放置到右侧位置 所以基本上总共有5个标记。一个在中间,四个在顶部、底部、左侧和右侧,距离正好10英里。我该怎么做呢?谷歌地图J

我已经使用GoogleMapAPI javascript创建了一个小工具。它以地名作为输入,在提交表单时,会在该位置放置标记。这是非常基本的用法。但我想实现的是

  • 以该位置的经纬度为基准,将其作为中心的标记(已完成)

  • 将一个标记放在距离中心10英里处的顶部位置

  • 将一个标记放置在距离中心10英里的底部位置

  • 将一个标记放在距离中心10英里的左侧位置

  • 将距离中心10英里的一个标记放置到右侧位置


  • 所以基本上总共有5个标记。一个在中间,四个在顶部、底部、左侧和右侧,距离正好10英里。我该怎么做呢?

    谷歌地图JS API有一个几何图形库。您需要将其包括在API调用中:

    https://maps.googleapis.com/maps/api/js?sensor=false&libraries=geometry

    包含允许传递坐标、距离和航向的方法

    0/360°
    =北部,
    90°
    =东部,
    180°
    =南部,等等

    因此,如果要计算距离坐标
    0,0
    以东10 km处的点,可以执行以下操作:

    let point = google.maps.geometry.spherical.computeOffset(new google.maps.LatLng(0,0), 10000, 90);
    
    距离以米为单位传递,因此您可以简单地将以英里为单位的距离乘以
    1609,34

    更多信息请点击此处:

    概念证明:

    var映射;
    函数initMap(){
    let center=new google.maps.LatLng(53.051185,-2.492474);
    map=new google.maps.map(document.getElementById('map-canvas'){
    缩放:13,
    中心:中心
    });
    var marker=new google.maps.marker({
    位置:中,
    地图:地图,
    });
    添加标记(中心,1000,0);
    添加标记(中心,1000,90);
    添加标记(中心,1000,180);
    addMarker(中心,1000270);
    }
    函数addMarker(坐标、偏移、航向){
    让point=google.maps.geometry.spherical.computeOffset(坐标、偏移、航向);
    var marker=new google.maps.marker({
    位置:点,,
    地图:地图,
    });
    }
    initMap()
    
    #地图画布{
    高度:200px;
    }
    
    
    这可能是重复的:@GrafiCodeStudio,可能是重复的,但提供的答案不好。它使用固定半径,但由于地球不圆,因此不精确。有关API提供的更简单、更精确的计算,请参见下面的答案。谢谢。我找到了问题所在。你的回答首先对我不起作用,你说“你不是巫师”。我觉得很冒犯,所以我否决了它。问题是,我在把每个标记点放在地图上之前对它们进行反向地理编码,因为我想检索这些标记的地址。最后,它做错了什么。因此,我刚刚删除了地理编码部分,并仅使用您的代码对其进行了修复。我将投票表决,并将其标记为正确答案。再次感谢。我不是想冒犯你,但你应该知道,仅仅发布一个截图并说它不起作用对其他人,尤其是那些试图帮助你的人是没有帮助的。。。别紧张!