6

如何在 TWebBrowser 中将图钉添加到谷歌地图并在点击图钉时调用事件?该解决方案需要同时在 iOS 和 Android 上运行。

4

1 回答 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 回答