起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2374|回复: 7

[结贴] 高德地图问题

[复制链接]

61

主题

170

帖子

260

积分

中级会员

Rank: 3Rank: 3

积分
260
QQ
发表于 2016-12-13 10:41:31 | 显示全部楼层 |阅读模式
在高德地图开发中我发现每次重新安装程序之后的第一次运行,总是不能很好的定位,定位点都是在非洲,感觉是我的权限速度比较慢,每次重新安装后到这个界面都会要提示你是否运行获取gps什么的,是不是这个导致了,我第一次定位总是在非洲,有什么解决方法吗?
发表于 2016-12-13 11:57:04 | 显示全部楼层
请问你的高德地图是自定义cordova插件实现的吗??

建议每次定义后把经纬度存储在本地的localStorage中!这样每次打开的时候先获取缓存中的位置进行显示,然后再慢慢获取真正的位置信息!获取后题号localStorage中的值!

这样每次打开定位就相对准确一些了
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

61

主题

170

帖子

260

积分

中级会员

Rank: 3Rank: 3

积分
260
QQ
 楼主| 发表于 2016-12-13 13:30:49 | 显示全部楼层
liangyongfei 发表于 2016-12-13 11:57
请问你的高德地图是自定义cordova插件实现的吗??

建议每次定义后把经纬度存储在本地的localStorage中! ...

这个是地图没有初始化还是获取当前位置的问题,地图是高德地图,获取当前位置用的是                        localStorage.setItem("latitude", position.coords.latitude);
localStorage.setItem("longitude", position.coords.longitude);
使用的是geolocation的cordova,我加载地图的代码是
Model.prototype.loadGaodeMap = function() {
        var marker1;
                var id = this.getIDByXID("gaodeMap");
                require([ 'http://webapi.amap.com/maps?v=1.3&key=您申请的key值' ], function() {
                        var map = new AMap.Map(id, {resizeEnable: true,zoom:12,cneter:[116.38,39.92]});
                        map.plugin(['AMap.ToolBar'], function() {
        //设置地位标记为自定义标记
                                var toolBar = new AMap.ToolBar();
                                map.addControl(toolBar);
                });
                }
                map.setFitView();
                var nowpoint=[localStorage.getItem("longitude")-0.0065,localStorage.getItem("latitude")-0.0065];
                map.setZoomAndCenter(14, nowpoint);
                marker1 = new AMap.Marker({  
                    icon:"./img/ic_mark0.png",  
                    position:nowpoint  
                });  
        marker1.setMap(map);
                });
        };
回复 支持 反对

使用道具 举报

发表于 2016-12-13 14:22:22 | 显示全部楼层
zhoupaopao 发表于 2016-12-13 13:30
这个是地图没有初始化还是获取当前位置的问题,地图是高德地图,获取当前位置用的是                        localStorage.setI ...

可以使用setInterval 等待 初始化完毕后再执行代码
http://bbs.wex5.com/forum.php?mo ... 3&pid=165336157
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

61

主题

170

帖子

260

积分

中级会员

Rank: 3Rank: 3

积分
260
QQ
 楼主| 发表于 2016-12-13 14:49:01 | 显示全部楼层
liangyongfei 发表于 2016-12-13 14:22
可以使用setInterval 等待 初始化完毕后再执行代码
http://bbs.wex5.com/forum.php?mod=redirect&goto=fi ...

怎么判断初始化完成没有呢,我是这么使用的,位置是放在require([ 'http://webapi.amap.com/maps?v=1.3&key=您申请的key值' ], function() {这行下面
var int=self.setInterval(clock,500)
                        function clock()
                                {
                                        if(...){
                                        int=window.clearInterval(int);
                                        }else{
                                               
                                        }
                                }
就是不知道该判断什么
回复 支持 反对

使用道具 举报

发表于 2016-12-13 15:27:52 | 显示全部楼层
zhoupaopao 发表于 2016-12-13 14:49
怎么判断初始化完成没有呢,我是这么使用的,位置是放在require([ 'http://webapi.amap.com/maps?v=1.3&k ...

比如判断AMap.Map 是否存在
if(AMap.Map){
int=window.clearInterval(int);
}else{
//执行你的代码!
}
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

61

主题

170

帖子

260

积分

中级会员

Rank: 3Rank: 3

积分
260
QQ
 楼主| 发表于 2016-12-13 15:40:32 | 显示全部楼层
liangyongfei 发表于 2016-12-13 15:27
比如判断AMap.Map 是否存在
if(AMap.Map){
int=window.clearInterval(int);

不对,应该放在上面那个里面的,不应该放在else里面的,但是我放了还是没有用,卸载重新安装后,第一次定位还是非洲,我觉得可能是定位需要权限,而第一次进去没有获取我位置的权限,然后要我点击确定获取之后,第二次进入才能正确显示,这下就不知道怎么解决了
回复 支持 反对

使用道具 举报

61

主题

170

帖子

260

积分

中级会员

Rank: 3Rank: 3

积分
260
QQ
 楼主| 发表于 2016-12-13 15:58:58 | 显示全部楼层
liangyongfei 发表于 2016-12-13 15:27
比如判断AMap.Map 是否存在
if(AMap.Map){
int=window.clearInterval(int);

OK,解决了,貌似是我想的那种错,然后我就用setInterval这个去判断经纬度是不是null,是的话一直获取不是我就显示地图,可以结贴了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-24 19:08 , Processed in 0.087570 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表