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

QQ登录

只需一步,快速开始

查看: 4206|回复: 11

[处理中2] 急急急!!!!!!页面跳转不灵了,在IPHONE下。

[复制链接]

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
发表于 2016-5-16 15:26:13 | 显示全部楼层 |阅读模式
大神好,我有个程序,是调用百度地图的。


发布后,android可以正常点按钮打开一个页面,根据经纬度定位到百度地图上。


可是 iPhone手机却不好使。代码如下。


        justep.Shell.showPage("$UI/SalMobel/channel/shipMap.w", {
                                                longitude : lon,
                                                latitude : lat
                                        });



发表于 2016-5-17 09:25:19 | 显示全部楼层
你试试打包平台自带的外卖案例是否可以??
在手机上需要安装百度APP 才可以正常使用!!

你是使用showPage打开一个.w页面,直接在这个页面显示的百度地图吗??
代码怎么写的??
建议debugger 真机调试看看是哪儿的代码执行有问题!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-5-17 10:19:34 | 显示全部楼层
外卖好使。 但是那种方式显示不适合我们程序。是一个列表。列表10多条数据,每次点开列表查看位置。可是有缓存,第一次打开后,第二次打开还是上一条记录的。
因此我觉得用showPage打开新页,然后,iPhone就不行了。

是的,是使用showPage打开一个.W页面,在页面上显示百度地图。代码如下。
  1. define(function(require) {
  2.         require("css!$UI/system/components/bootstrap/lib/css/bootstrap").load();
  3.         var $ = require("jquery");
  4.         var justep = require("$UI/system/lib/justep");

  5.         var Model = function() {
  6.                 this.callParent();
  7.         };

  8.         Model.prototype.modelParamsReceive = function(event) {
  9.                
  10.                 // 获取经纬度
  11.                 var longitude = this.params.longitude;
  12.                 var latitude = this.params.latitude;

  13.                 // 获取地图DIV
  14.                 var id = this.getIDByXID("baiduMap");
  15.                 window._baiduInit = function() {
  16.                         var map = new BMap.Map(id,{mapType:BMAP_HYBRID_MAP});
  17.                         map.centerAndZoom(new BMap.Point(longitude, latitude), 8);
  18.                         //map.addControl(new BMap.MapTypeControl());
  19.                         map.addControl(new BMap.MapTypeControl({ mapTypes: [BMAP_HYBRID_MAP] }));
  20.                         map.enableScrollWheelZoom(true);
  21.                         // 创建标注
  22.                         var pt = new BMap.Point(longitude, latitude);
  23.                         var myIcon = new BMap.Icon(require.toUrl("./logo.png"), new BMap.Size(40, 40));
  24.                         var marker2 = new BMap.Marker(pt, {
  25.                                 icon : myIcon
  26.                         });
  27.                        
  28.                         map.addOverlay(marker2);
  29.                 };
  30.                 require([ 'http://api.map.baidu.com/api?v=2&ak=KvhKfTMYwPKrt1VyyxaNsLlLeqo9d3lz&callback=_baiduInit' ], function() {
  31.                         if (window.BMap && window.BMap.Map) {
  32.                                 window._baiduInit();
  33.                         }
  34.                 });
  35.         };

  36.         Model.prototype.backBtnClick = function(event) {
  37.                 this.owner.close();
  38.         };

  39.         Model.prototype.modelLoad = function(event) {

  40.         };

  41.         return Model;
  42. });
复制代码


回复 支持 反对

使用道具 举报

发表于 2016-5-17 14:12:18 | 显示全部楼层
路小佳 发表于 2016-5-17 10:19
外卖好使。 但是那种方式显示不适合我们程序。是一个列表。列表10多条数据,每次点开列表查看位置。可是有 ...

建议你在modelParamsReceive  这个事件中debugger调试看看!
第二次进去的时候这个事件有没有执行!传递的参数是不是第二次真正传过去的参数?
使用iphon手机自带的浏览器也是这样的吗?

使用chrome浏览器模拟iPhone运行呢??这个正常吗??
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-5-18 14:52:13 | 显示全部楼层
第二次进去没有执行,所以选择了使用showPage方法。

使用iphone自带的浏览器可以查看。

使用chrome模拟iphone 4 5 6 6s 都可以。
回复 支持 反对

使用道具 举报

发表于 2016-5-18 16:47:58 | 显示全部楼层
路小佳 发表于 2016-5-18 14:52
第二次进去没有执行,所以选择了使用showPage方法。

使用iphone自带的浏览器可以查看。

你的意思是 在 iphone  真机app中,showPage第二次打开的时候不能触发modelParamsReceive  事件??
你好楼主,这个问题需要我在本地环境进行问题重现,所以会花费较长时间,请你耐心等待,我完成后会第一时间反馈结果,谢谢!2016051800044
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

12

主题

2627

帖子

2866

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2866
发表于 2016-5-18 18:16:25 | 显示全部楼层
在页面的onParamsReceive中写alert(this.params.longitude + "," + this.params.latitude);
之后在以下场景中测试:
1. chrome浏览器中: 多次打开, 看看每次打开的值是否是自己期望的
2. chrome模块iphone: 多次打开, 看看每次打开的值是否是自己期望的
3. ios手机上的浏览器: 多次打开, 看看每次打开的值是否是自己期望的
4. ios的app上: 多次打开, 看看每次打开的值是否是自己期望的


另: 还有"可是 iPhone手机却不好使"具体是指什么? 地图没有加载? 还是地图的位置不对
回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-5-19 10:04:39 | 显示全部楼层
liangyongfei 发表于 2016-5-18 16:47
你的意思是 在 iphone  真机app中,showPage第二次打开的时候不能触发modelParamsReceive  事件??
你好 ...

谢谢这么关注。我没说明白可能。

showPage第二次打开没问题。 我所说的第二次是之前用的外卖的例子 dialog的方式打开不好使。


现在showPage的方法,只有iPhone真机不好使,点按钮后没有反应,我把源码发给您。

1--------------------------------------------------------------
首先是列表页面,我直接showPage
  1. ustep.Shell.showPage("$UI/SalMobel/channel/shipMap.w", {
  2.                                                 longitude : "122.996832",
  3.                                                 latitude : "30.794163"
  4.                                         });
复制代码


2--------------------------------------------------------------
然后是地图页

  1.         Model.prototype.modelParamsReceive = function(event) {
  2.                
  3.                 // 获取经纬度
  4.                 var longitude = this.params.longitude;
  5.                 var latitude = this.params.latitude;

  6.                 // 获取地图DIV
  7.                 var id = this.getIDByXID("baiduMap");
  8.                 window._baiduInit = function() {
  9.                         var map = new BMap.Map(id,{mapType:BMAP_HYBRID_MAP});
  10.                         map.centerAndZoom(new BMap.Point(longitude, latitude), 8);
  11.                         //map.addControl(new BMap.MapTypeControl());
  12.                         map.addControl(new BMap.MapTypeControl({ mapTypes: [BMAP_HYBRID_MAP] }));
  13.                         map.enableScrollWheelZoom(true);
  14.                         // 创建标注
  15.                         var pt = new BMap.Point(longitude, latitude);
  16.                         var myIcon = new BMap.Icon(require.toUrl("./logo.png"), new BMap.Size(40, 40));
  17.                         var marker2 = new BMap.Marker(pt, {
  18.                                 icon : myIcon
  19.                         });
  20.                        
  21.                         map.addOverlay(marker2);
  22.                 };
  23.                 require([ 'http://api.map.baidu.com/api?v=2&ak=KvhKfTMYwPKrt1VyyxaNsLlLeqo9d3lz&callback=_baiduInit' ], function() {
  24.                         if (window.BMap && window.BMap.Map) {
  25.                                 window._baiduInit();
  26.                         }
  27.                 });
  28.         };
复制代码








回复 支持 反对

使用道具 举报

26

主题

107

帖子

193

积分

初级会员

Rank: 2

积分
193
QQ
 楼主| 发表于 2016-5-19 10:05:29 | 显示全部楼层
hecr 发表于 2016-5-18 18:16
在页面的onParamsReceive中写alert(this.params.longitude + "," + this.params.latitude);
之后在以下场景 ...

123都是期望的。
4 没有反映。
   点击查看地图的按钮,没有任何动作。 地图页没有加载。
回复 支持 反对

使用道具 举报

12

主题

2627

帖子

2866

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2866
发表于 2016-5-19 11:11:04 | 显示全部楼层
如果能真机调试的话, 建议使用ios真机调试看看, 可以参考:http://docs.wex5.com/android-and-ios-device-debugging/

如果不能真机调试, 可以在地图页面的Model.prototype.modelParamsReceive = function(event) {中添加alert, 看看有没有执行到这个方法中,
同时, 在onLoad事件中也写alert,
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-22 05:49 , Processed in 0.062757 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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