Forms 如何单击地图并在表单中填充纬度和经度字段?

Forms 如何单击地图并在表单中填充纬度和经度字段?,forms,google-maps,maps,latitude-longitude,Forms,Google Maps,Maps,Latitude Longitude,我有一个用户需要填写的表格,其中需要确定位置。我在表单上有纬度和经度输入字段。我也在寻找十进制的lat和long。我想要的似乎很简单。我只想有一个链接,用户可以点击它会弹出一个地图(谷歌或雅虎),他可以使用地图找到位置,只需点击它,这将自动填充两个输入字段的lat和long从地图。以前有人这样做过吗 您需要知道地图上至少两个点的纵横比,最好不要太近,还需要知道它们相对于一个角的像素坐标(即最好的两个点是相对的角)。然后,通过插值将单击的像素坐标转换为lat/long就是一个简单的数学问题。然而,

我有一个用户需要填写的表格,其中需要确定位置。我在表单上有纬度和经度输入字段。我也在寻找十进制的lat和long。我想要的似乎很简单。我只想有一个链接,用户可以点击它会弹出一个地图(谷歌或雅虎),他可以使用地图找到位置,只需点击它,这将自动填充两个输入字段的lat和long从地图。以前有人这样做过吗

您需要知道地图上至少两个点的纵横比,最好不要太近,还需要知道它们相对于一个角的像素坐标(即最好的两个点是相对的角)。然后,通过插值将单击的像素坐标转换为lat/long就是一个简单的数学问题。然而,请注意,只有当地图覆盖的区域相对于地球的曲率是“平坦”的时,这种方法才有效。如果地图覆盖了一大片区域,比如说6000英里宽,就会出现明显的失真。如果您需要精确的定位,您必须进行一些地图投影来计算位置。

查看谷歌地图API以及以下链接:


我认为谷歌地图API可能可以满足您的需求。

使用谷歌地图API,您可以非常轻松地做到这一点。只需向地图对象添加一个click事件处理程序,该处理程序将传递用户单击位置的纬度/经度坐标(请参阅
click
事件的详细信息)


该代码适用于GoogleMapAPI版本3。v2已经贬值,所以最好还是坚持使用v3

有一个id为mapdiv的div,在其中加载映射

单击地图时,使用id为latlng的输入元素显示lat和lng。这样人们就可以将该值复制到另一个应用程序中。您可以根据需要修改opts变量

为代码中类似的click事件添加事件处理程序。因此,当您单击地图时,输入元素将填充lat和lng值

var map;
function mapa()
{
    var opts = {'center': new google.maps.LatLng(26.12295, -80.17122), 'zoom':11, 'mapTypeId': google.maps.MapTypeId.ROADMAP }
    map = new google.maps.Map(document.getElementById('mapdiv'),opts);

    google.maps.event.addListener(map,'click',function(event) {
        document.getElementById('latlng').value = event.latLng.lat() + ', ' + event.latLng.lng()
    })      
}
以上就是你所需要的一切


如果希望在地图上移动鼠标时查看lat和lng的值,请添加鼠标移动事件侦听器,如以下代码所示。您可以使用范围甚至输入元素来查看值。我在代码中使用了span

google.maps.event.addListener(map,'mousemove',function(event) {
    document.getElementById('latspan').innerHTML = event.latLng.lat()
    document.getElementById('lngspan').innerHTML = event.latLng.lng()
});

我不太明白这个问题。你能重新措辞或澄清一下吗?我不知道如何更好地解释它。我只想在单击地图时,用值填充纬度和经度的每个字段。我知道使用谷歌地球,当你把鼠标指针放在地图上时,在状态栏上你可以看到十进制的lat和long值。我想通过单击地图上的一个点,将这两个值从地图转移到表单字段中。我真的不知道该怎么解释。谢谢你的链接,我要去看看。
google.maps.event.addListener(map,'mousemove',function(event) {
    document.getElementById('latspan').innerHTML = event.latLng.lat()
    document.getElementById('lngspan').innerHTML = event.latLng.lng()
});