最近做了一个项目,原生中嵌套h5模块,加载h5我用的UIWebView ,h5开发反应h5定位不准确 希望原生定位然后把参数传过去,废话不多说上代码,
h5给的接受方法如下:
window.moveTo = function(lng, lat) {
window.currentPosition = {
lng: lng, // 经度
lat: lat // 纬度
};
};
h5开发意思是直接通过App注入js 这个方法。
经过一番研究,其实也很简单,步骤如下:
1.引入库 JavaScriptCore
2.加入头文件#import <JavaScriptCore/JavaScriptCore.h>
3.申明
@property (strong, nonatomic) JSContext *context;
4. 在webViewDidFinishLoad 方法中实现注入
- (void)webViewDidFinishLoad:(UIWebView*)webView{
self.context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
NSString *alertJS = [NSString stringWithFormat:@"moveTo(%@,%@);",@"118.88549",@"32.143186"];
[self.context evaluateScript:alertJS];//通过oc方法调用js的alert
}
2.18.7.35.完成,运行之后 h5可以接受到传入的经纬度,精准定位,至此大功告成。
2018.7.4
ps: NSString *alertJS = [NSString stringWithFormat:@"moveTo('%@','%@');",@"118.88549",@"32.143186"];这种写法 传给h5的是字符串,在传string类型的数据时,加上''符号就行了(传字符串类型 true false有感)。
/*顺便谈谈之前写的js调用h5,项目是h5应用,用到地图导航的时候 希望传值给客户端后让客户端走完导航流程:*/
网友评论