谷歌定位 geolocation Google map 定位

最近有个需求,关于国外(主要是美国)的当前位置定位和指定地址并且显示地图。故采用了google map 的 api完成(肯定需要科学上网)。

(写在前面。。。下面的demo google文档也有,但是不好找,特别对于英语不好的人(捂脸))

1.获得当前位置定位,并且返回州和市名称
主要用到两个api,一个是geolocation对象的getCurrentPosition()方法获取位置(目前找到的比较准确的定位,国内外都能用,通过硬件ip或者wifi或者gps),再将经纬度传入google.maps.Geocoder类下面的geocode方法,返回相应信息。

**首先需要一个Google的key,可以去谷歌免费申请**	
引入googel服务,jsonp那种传入一个回调,我是在这里运行初始化函数,在页面渲染的时候就进行定位
    <script
        src="https://maps.google.cn/maps/api/js?key=yourkey&libraries=places&callback=init"
        async defer></script>
    <script>

现在接口,key都有了就可以愉快的开始码代码了
先获取经纬度

 navigator.geolocation.getCurrentPosition(function (position) {
                var pos = {
                    lat: position.coords.latitude,
                    lng: position.coords.longitude
                };
                console.log(pos);//获取的位置
                if (pos == undefined) {
                    throw "值为空";
                }
                getPosition(pos)//调用包含谷歌接口的api
            },
            function (err) {
                console.warn('ERROR(' + err.code + '): ' + err.message);
            })

将位置传入谷歌接口 navigator.geolocation.getCurrentPosition(fn,fn)有两个回调,一个用于成功的回调,一个失败的回掉(这里考虑了失败的情况,用了try cach)

 function getPosition(latlng) {
            geocoder = new google.maps.Geocoder;
            geocoder.geocode({
                'location': latlng
            }, function (results, status) {
                console.log('進入定位', results, status);
                if (status === 'OK') {
                    try {
                        var firstResult = results[0];
                        var city = firstResult.address_components[2].long_name//城市名
                        var state = firstResult.address_components[5].long_name//州名
                        console.log(firstResult);
                        console.log(city);
                        console.log(state);
                        console.log(city == '' || state == '');
                        if (city == '' || state == '') {
                          doSomething...
                            return 0
                        } else {
 						doSomething...
                                } else {
                                    console.log('fail');
                                     doSomething...
                                }
                            })
                        }
                    } catch (e) {
                        console.log(e);
                        doSomething...
                    }
                } else {
                    doSomething...
                }
            });

        }

2.传入地址,生成地图

这个谷歌文档给了api,我自己删减些(有些用不到),感兴趣的可以直接去文档看看,我这里加了个箭头

     function initMap() {
        var map = new google.maps.Map(document.getElementById('map'), {
          zoom: 8,
          center: {lat: -34.397, lng: 150.644}                                            //这里需要传一个默认的,后面会覆盖
        });
        var geocoder = new google.maps.Geocoder();
        //拼接地址
    var address = 地址//传入地址
        
        geocodeAddress(address,geocoder, map);
      }
        //渲染地图
      function geocodeAddress(address,geocoder, resultsMap) {
       
        geocoder.geocode({'address': address}, function(results, status) {
          if (status === 'OK') {
            resultsMap.setCenter(results[0].geometry.location);
            var marker = new google.maps.Marker({                                //加入箭头
              map: resultsMap,
              position: results[0].geometry.location
            });
          } else {
            alert('Geocode was not successful for the following reason: ' + status);
          }
        });
      }

写在后面,前端弱鸡,大佬轻喷,大家有什么想交流的可以联系我也可以评论。
加我哦!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要创建一个具有定位功能的earth文件,需要使用地图API和定位API,下面是一个示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Earth Map</title> <style> #map { height: 100%; } </style> </head> <body> <div id="map"></div> <script> function initMap() { var map = new google.maps.Map(document.getElementById('map'), { center: {lat: -34.397, lng: 150.644}, zoom: 8 }); // 获取当前位置 if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var pos = { lat: position.coords.latitude, lng: position.coords.longitude }; // 在地图上标记当前位置 var marker = new google.maps.Marker({ position: pos, map: map, title: 'Your Location' }); map.setCenter(pos); }, function() { handleLocationError(true, infoWindow, map.getCenter()); }); } else { // 浏览器不支持定位 handleLocationError(false, infoWindow, map.getCenter()); } } function handleLocationError(browserHasGeolocation, infoWindow, pos) { // 处理定位错误 var errorMsg = browserHasGeolocation ? 'Error: The Geolocation service failed.' : 'Error: Your browser doesn\'t support geolocation.'; console.log(errorMsg); } </script> <script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"></script> </body> </html> ``` 在这个示例中,我们使用Google Maps API和Geolocation API来实现定位功能。首先,创建一个地图,并将其放置在一个div元素中。然后,使用Geolocation API获取当前位置,并在地图上标记当前位置。最后,将地图中心设置为当前位置。 请注意,这个示例需要替换 `YOUR_API_KEY` 为你自己的Google API密钥。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值