本帖最后由 ludy 于 2016-4-29 16:34 编辑
参考Demo地图示例,百度api,以及x5页面交互demo制作。目录说明及实现功能介绍: 1. index.w: 定义ShellImpl,采用的shell跳转。必须定义这个,不定义的话,需要使用window方法。 2. main.w:部分外卖示例的内容,放了定位功能和定义了个定位按钮,传坐标给map页面,并接收map返回的string参数,放到文本框里。如何放到外卖里,不做说明了。 3. bmap/map.w: 1)接收main页面的参数,做了判断,有参数,按参数坐标启动地图,没有就默然启动到北京。 2)加了城市切换(注意,百度api用2.0,1.4不支持这个方法) 3)鼠标单击事件,并将鼠标点击的坐标,解析成地址(判断是否是直辖市,直辖市不显示省份),放到文本框里。 4)确认使用后,将地址传参给main页面,并显示在main页面的文本框里。 另外说明一下。如果是window跳转,或者单独打开页面,可以直接初始化示例,把请求的参数放到源文件的window下面。 示例: .w源文件 - <div xmlns="http://www.w3.org/1999/xhtml" xid="window" class="window" component="$UI/system/components/justep/window/window"
- design="device:m;">
- <script src="http://api.map.baidu.com/api?v=2.0&ak=您的key"/>
- <div component="$UI/system/components/justep/model/model" xid="model" onLoad="modelLoad"/>
复制代码js文件 - Model.prototype.modelLoad = function(event) {
- // 百度地图API功能
- var point = new BMap.Point(116.404, 39.915);
- map.centerAndZoom(point, 15);
- var marker = new BMap.Marker(point);
- map.addControl(new BMap.MapTypeControl());
- map.enableScrollWheelZoom(true);
- map.addOverlay(marker);
- };
复制代码如果要用shell跳转,必须要用函数请求回调。 .w文件不需要修改,直接js回调。代码贴不下。就去参考起步提供的map示例,或者我的附件。
具体原因不太清楚。估计是,直接加载或者window跳转,是从头开始启动的。所以在启动前,已经把百度的api请求加载进去了。 但是shell跳转,好像是跳过了window示例,直接调用的onModelLoad方法。所以在源码页面添加的< script />没有请求进去,就会出现BMAP没定义的错误。
另外,本来打算直接用百度地图Api的定位函数的。发现在safari浏览器正常,chrome浏览器,就会报一堆什么f.XX 没定义的错误。不知道啥原因。不搞了。 就直接使用传参了。
源码 |