Android开发-使用WebView拉入一个带有google地图引用的iframe不显示自定义标记.< / h1



我正在构建一个realty应用程序,它依赖于从trulia.com工具页面从这个位置生成的一些HTML。

我遇到的问题是,当我使用WebView拉在这个html它不会显示iframe上的标记,指向地图上的属性位置,并显示位于那里的家的价格。我在WebView上启用了javascript,地图显示得很好,只是没有标记。

有没有人有任何经验得到这些标记与WebView的工作。请不要告诉我只使用谷歌地图API。这应该是一个简单的解决方案。谢谢。

更新:

这是我拉入的html

<link rel="stylesheet" href="http://css.trulia-cdn.com/css/G26_32/css/pg_truliatool-generate.css"><div class="trulia_tool container300x250 map-search green" style="width: 296px; height: 250px;"><div class="trulia_tool_header"><h6>Map Search</h6></div><iframe height="400px" src="http://synd.trulia.com/tools/map-search/embedded?params%5Blocation%5D=Idaho+Falls%2C+ID&params%5BlocationId%5D=19191&params%5Bagent_id%5D=&params%5Bproperty_status%5D=for+sale&params%5Btitle%5D=Map+Search&params%5Bcolor%5D=green&params%5Bemail%5D=&params%5Buser_url%5D=&params%5Bwidth%5D=300&params%5Bheight%5D=250&params%5Bguid%5D=53ced10419feb" style="height: 185px; overflow: hidden;"><p>Your browser does not support iframes</p></iframe><div class="trulia_tool_footer"><div class="footer-link typeTruncate"><a href="http://www.trulia.com/for_sale/Idaho_Falls,ID/" title="See homes in Idaho Falls, ID" target="_blank">See homes in</a><br /><span>Idaho Falls, ID</span></div><a class="trulia-logo" href="http://www.trulia.com/" title="Trulia" target="_blank"></a></div>

更新:

以下是logcat消息:

07-24 02:59:30.444 2239-2239/com.example。FranciscoBarreto I/chromium: [INFO:library_loader_hooks.cc(112)]启用了chromium日志记录:level = 0,默认verbose = 007-24 02:59:30.456 2239-2239/com.example。FranciscoBarreto I/BrowserProcessMain:初始化铬进程,renderers=007:24 02:59:30.528 2239-2264/com.example。FranciscoBarreto W/chromium: [WARNING:proxy_service.cc(888)] PAC支持被禁用,因为没有系统实现07:24 02:59:30.652 2239-2239/com.example。FranciscoBarreto D/dalvikvm: GC_FOR_ALLOC释放290K, 3%释放14391K/14788K,暂停13ms,总共14ms07:24 02:59:30.760 2239-2239/com.example。FranciscoBarreto I/dalvikvm-heap:对于2536932字节的分配,将堆(碎片情况)增长到16.572MB07-24 02:59:30.808 2239-2248/com.example。FranciscoBarreto D/dalvikvm: GC_FOR_ALLOC释放<1K, 3%释放16867K/17268K,暂停44ms,总计44ms07-24 02:59:30.972 2239-2239/com.example。弗朗西斯科·巴雷托I/编舞:跳过42帧!应用程序可能在其主线程上做了太多的工作。07-24 02:59:31.140 2239-2239/com.example。FranciscoBarreto W/EGL_genymotion: eglsurfaceattrb未实现07-24 02:59:31.164 2239-2239/com.example。FranciscoBarreto W/W contents: nativeOnDraw failed;清除背景色。07-24 02:59:32.464 2239-2239/com.example。FranciscoBarreto W/W contents: nativeOnDraw failed;清除背景色。07:24 02:59:32.884 2239-2239/com.example。FranciscoBarreto W/W contents: nativeOnDraw failed;清除背景色。07:24 02:59:32.968 2239-2239/com.example。FranciscoBarreto W/W contents: nativeOnDraw failed;清除背景色。07:24 02:59:33.232 2239-2278/com.example。FranciscoBarreto I/chromium: [INFO:simple_index_file.cc(397)]从磁盘恢复简单缓存索引。07-24 02:59:33.416 2239-2239/com.example。FranciscoBarreto I/chromium: [INFO:async_pixel_transfer_manager_android.cc(56)]不支持异步像素传输07-24 02:59:33.936 2239-2239/com.example。FranciscoBarreto I/chromium: [INFO:async_pixel_transfer_manager_android.cc(56)]不支持异步像素传输07-24 02:59:34.548 2239-2239/com.example。FranciscoBarreto E/eglCodecCommon:** ERROR unknown type 0x0 (glSizeof,73)07-24 02:59:34.560 2239-2239/com.example。弗朗西斯科·巴雷托I/编舞:跳过81帧!应用程序可能在其主线程上做了太多的工作。07:24 02:59:36.072 2239-2239/com.example。FranciscoBarreto E/eglCodecCommon: **错误未知类型0x0 (glSizeof,73)07-24 02:59:38.448 2239-2239/com.example。FranciscoBarreto E/eglCodecCommon:** ERROR unknown type 0x0 (glSizeof,73)07-24 02:59:38.460 2239-2239/com.example。弗朗西斯科·巴雷托I/编舞:跳过108帧!应用程序可能在其主线程上做了太多的工作。07-24 02:59:39.108 2239-2239/com.example。FranciscoBarreto E/eglCodecCommon: **错误未知类型0x0 (glSizeof,73)07:24 02:59:39.116 2239-2239/com.example。D/MyApplication: Uncaught ReferenceError: $ is not defined——From07:24 02:59:39.116 2239-2239/com.example。FranciscoBarreto I/chromium: [INFO:CONSOLE(1)] "Uncaught ReferenceError: $ is not defined",来源:(1)07:24 02:59:39.116 2239-2239/com.example。D/MyApplication: Uncaught ReferenceError: $ is not defined——From07:24 02:59:39.116 2239-2239/com.example。FranciscoBarreto I/chromium: [INFO:CONSOLE(1)] "Uncaught ReferenceError: $ is not defined",来源:(1)07-24 02:59:40.512 2239-2239/com.example。D/MyApplication: XMLHttpRequest无法加载http://m.trulia.com/_ajax/Location/LocalComps/get_comps/?b=43.547073,-111.937025,43.555782,-111.911619&v=city&c=Idaho%20Falls&s=ID&z=&n=&t=for%20sale。Access-Control-Allow-Origin不允许访问http://synd.trulia.com。——从http://synd.trulia.com/tools/map-search/embedded?params%5Blocation%5D=Idaho+Falls%2C+ID&params%5BlocationId%5D=19191&params%5Bagent_id%5D=&params%5Bproperty_status%5D=for+sale&params%5Btitle%5D=Map+Search&params%5Bcolor%5D=green&params%5Bemail%5D=&params%5Buser_url%5D=&params%5Bwidth%5D=300&params%5Bheight%5D=250&params%5Bguid%5D=53cc7419073a5的第0行07-24 02:59:40.512 2239-2239/com.example。FranciscoBarreto I/chromium: [INFO:CONSOLE(0)] "XMLHttpRequest无法加载http://m.trulia.com/_ajax/Location/LocalComps/get_comps/?b=43.547073,-111.937025,43.555782,-111.911619&v=city&c=Idaho%20Falls&s=ID&z=&n=&t=for%20sale。来源http://synd.trulia.com是不允许访问-控制-允许-原点",来源:http://synd.trulia.com/tools/map-search/embedded?params%5Blocation%5D=Idaho+Falls%2C+ID&params%5BlocationId%5D=19191&params%5Bagent_id%5D=&params%5Bproperty_status%5D=for+sale&params%5Btitle%5D=Map+Search&params%5Bcolor%5D=green&params%5Bemail%5D=&params%5Buser_url%5D=&params%5Bwidth%5D=300&params%5Bheight%5D=250&params%5Bguid%5D=53cc7419073a5 (0)07:24 02:59:42.460 2239-2239/com.example。FranciscoBarreto E/eglCodecCommon:** ERROR unknown type 0x0 (glSizeof,73)07:24 02:59:42.472 2239-2239/com.example。弗朗西斯科·巴雷托I/编舞:跳过92帧!应用程序可能在其主线程上做了太多的工作。02:59:42.476 2239-2239/com.example。D/MyApplication: XMLHttpRequest无法加载http://m.trulia.com/_ajax/Location/LocalComps/get_comps/?b=43.487292,-112.046667,43.49601,-112.021262&v=city&c=Idaho%20Falls&s=ID&z=&n=&t=for%20sale。Access-Control-Allow-Origin不允许访问http://synd.trulia.com。——从http://synd.trulia.com/tools/map-search/embedded?params%5Blocation%5D=Idaho+Falls%2C+ID&params%5BlocationId%5D=19191&params%5Bagent_id%5D=&params%5Bproperty_status%5D=for+sale&params%5Btitle%5D=Map+Search&params%5Bcolor%5D=green&params%5Bemail%5D=&params%5Buser_url%5D=&params%5Bwidth%5D=300&params%5Bheight%5D=250&params%5Bguid%5D=53cc7419073a5的第0行02:59:42.476 2239-2239/com.example。FranciscoBarreto I/chromium: [INFO:CONSOLE(0)] "XMLHttpRequest无法加载http://m.trulia.com/_ajax/Location/LocalComps/get_comps/?b=43.487292,-112.046667,43.49601,-112.021262&v=city&c=Idaho%20Falls&s=ID&z=&n=&t=for%20sale。来源http://synd.trulia.com是不允许访问-控制-允许-原点",来源:http://synd.trulia.com/tools/map-search/embedded?params%5Blocation%5D=Idaho+Falls%2C+ID&params%5BlocationId%5D=19191&params%5Bagent_id%5D=&params%5Bproperty_status%5D=for+sale&params%5Btitle%5D=Map+Search&params%5Bcolor%5D=green&params%5Bemail%5D=&params%5Buser_url%5D=&params%5Bwidth%5D=300&params%5Bheight%5D=250&params%5Bguid%5D=53cc7419073a5 (0)07:24 02:59:42.768 2239-2239/com.example。FranciscoBarreto E/eglCodecCommon: **错误未知类型0x0 (glSizeof,73)07-24 02:59:44.008 2239-2239/com.example。FranciscoBarreto E/eglCodecCommon:** ERROR unknown type 0x0 (glSizeof,73)07:24 02:59:44.020 2239-2239/com.example。弗朗西斯科·巴雷托I/编舞:跳过61帧!应用程序可能在其主线程上做了太多的工作。07-24 02:59:44.484 2239-2239/com.example。FranciscoBarreto E/eglCodecCommon: **错误未知类型0x0 (glSizeof,73)07-24 02:59:44.984 2239-2239/com.example。FranciscoBarreto E/eglCodecCommon: **** ERROR unknown type 0x0 (glSizeof,73)

如果你正在使用包含你发布的html的文件设置WebView内容,或者你正在传递包含该html的字符串,你可能需要使用setAllowUniversalAccessFromFileURLs来允许WebView从页面上运行的脚本向其他资源发出请求。

在你的日志中,这似乎是很明显的问题:

02:59:42.476 2239-2239/com.example.FranciscoBarreto D/MyApplication﹕ XMLHttpRequest cannot load http://m.trulia.com/_ajax/Location/LocalComps/get_comps/?b=43.487292,-112.046667,43.49601,-112.021262&v=city&c=Idaho%20Falls&s=ID&z=&n=&t=for%20sale. Origin http://synd.trulia.com is not allowed by Access-Control-Allow-Origin. -- From line 0 of http://synd.trulia.com/tools/map-search/embedded?params%5Blocation%5D=Idaho+Falls%2C+ID&params%5BlocationId%5D=19191&params%5Bagent_id%5D=&params%5Bproperty_status%5D=for+sale&params%5Btitle%5D=Map+Search&params%5Bcolor%5D=green&params%5Bemail%5D=&params%5Buser_url%5D=&params%5Bwidth%5D=300&params%5Bheight%5D=250&params%5Bguid%5D=53cc7419073a5

Trulia获取的页面上运行的javascript正在尝试使用Ajax调用检索要显示的位置,给定您所在地区的坐标。这是失败的,因为浏览器不允许任何网络调用一个新的"源"地址,这将是任何地址,如果你没有加载一个远程页面在WebView。

尝试在webView上使用这个调用来允许这些请求通过:

if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
}

最新更新