如何在 TWebBrowser 中将图钉添加到谷歌地图并在点击图钉时调用事件?该解决方案需要同时在 iOS 和 Android 上运行。
问问题
711 次
1 回答
0
您必须在本机(iOS/Android)和您的 GoogleMaps javascript 代码之间建立一些桥梁。例如,要在地图上放置图钉,您必须在 js 端注入调用 addPin 方法的 js 代码。
在 iOS 上,它是通过调用名为 stringByEvaluatingJavaScriptFromString 的 Web 视图方法来完成的:
[webview stringByEvaluatingJavaScriptFromString:@"addPin()"];
并且要在 webview 上监听点击事件,您必须在点击 pin 时实现回调,并使用 iFrame 方法调用您的 objC 方法:
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", "js-frame:myPinTappedMethod";
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
它将在本机端触发 web 视图的 shouldStartLoadWithRequest: 委托,因此您所要做的就是读取请求并处理...
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
// Intercept custom location change, URL begins with "js-call:"
if ([[[request URL] absoluteString] hasPrefix:@"js-call:"]) {
// Extract the selector name from the URL
NSArray *components = [requestString componentsSeparatedByString:@":"];
NSString * functionName = [components objectAtIndex:1];
// Call the given selector
[self performSelector:NSSelectorFromString(functionName)];
// Cancel the location change
return NO;
}
// Accept this location change
return YES;
}
希望能帮助到你!
于 2014-11-07T08:51:28.280 回答