高德:AMap.Geocoder is not a constructor解决办法?

xenia
  • 71

clipboard.png

function geocoder(){
            console.log('havent');
                    var geocoder = new AMap.Geocoder();
                    console.log('will');
        geocoder.getLocation(address[0], function(status,result){
            console.log(result);
            if (status === 'complete' && result.info === 'OK') {
                map[0].setZoomAndCenter(16,result);
                map[0].addMarker(result);
            }else{
                alert("您选择地址没有解析到结果!");
            }
        });

clipboard.png

回复
阅读 23.1k
3 个回答
漫步_雨林
  • 1
新手上路,请多包涵
chenyy_2017
  • 2
新手上路,请多包涵

这个问题说的是AMap.Map不是一个构造函数。原因就有于有一部分代码没有执行完毕。这是因为amap js里面有一部分是异步加载的,或者是我们在js中手动加载amap js导致的。amap js提供了一个callback回调,把创建地图的代码放在回调里即可。需要先创建一个全局函数,具体代码如下:
[html] view plain copy
<script src="http://webapi.amap.com/maps?v...;key=您申请的key值&callback=init"></script>
<script type="text/javascript">

window.init = function(){  
    var map = new AMap.Map('container', {  
       center:[117.000923,36.675807],  
       zoom:11  
    });  
}  

</script>

官方文档地址:
http://lbs.amap.com/api/javas...

Actioning
  • 1
新手上路,请多包涵

$scope.map.plugin(['AMap.Geocoder',], function(){

     var geocoder = new AMap.Geocoder();

})
采用这种方式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏