很無耐,XE寫APP的幫助太少了。關於WEBBROWSER如何支持LBS定位的問題 |
尚未結案
|
vivitor
一般會員 發表:1 回覆:6 積分:1 註冊:2015-10-01 發送簡訊給我 |
為了令WEBVIEW打開地圖,地圖調用定位,即LBS功能,這是ANDROID原生代碼。但是在XE中,百思不得奇解。試了很多方法,都不知道如何寫好。onGeolocationPermissionsShowPrompt在DELPHI中沒辦法觸發
webView.geeSettings.setJavaScriptEnabled(true); webView.getSettings.setGeolocationEnabled(true); webView.getSettings.setJavaScriptCanOpenWindowsAutomatically(true); webView.setWebChromeClient(new WebChromeClient() { @Override public void onGeolocationPermissionsShowPrompt(String origin, android.webkit.GeolocationPermissions.Callback callback) { callback.invoke(origin, true, false); super.onGeolocationPermissionsShowPrompt(origin, callback); } 以上是安卓原生的JAVA寫法。 而DELPHI XE,我試著改寫FMX.WebBrowser.Android,在InitUIThread加上以下代碼,但是事件onGeolocationPermissionsShowPrompt怎麽樣都不會觸發。不知道有沒有朋友解決這個問題的。這個問題解決的話,才能夠使用WEB使用.NET之類寫的程序調用百度,騰訊等定位功能,即LBS功能! FJWebBrowser.getSettings.setJavaScriptCanOpenWindowsAutomatically(true); FJWebBrowser.getSettings.setGeolocationEnabled(true); FJWebBrowser.getSettings.setDomStorageEnabled(true); FJWebChromeClient := TJWebChromeClientEx.Create; FJWebBrowser.setWebChromeClient(FJWebChromeClient); TJWebChromeClientEx = class(TJWebChromeClient) public procedure onGeolocationPermissionsShowPrompt(origin: JString; callback: JGeolocationPermissions_Callback); cdecl; end; procedure TJWebChromeClientEx.onGeolocationPermissionsShowPrompt (origin: JString; callback: JGeolocationPermissions_Callback); begin callback.invoke(origin, true, False); inherited; end; |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
vivitor
一般會員 發表:1 回覆:6 積分:1 註冊:2015-10-01 發送簡訊給我 |
===================引 用 P.D. 文 章=================== 抱歉, 不是要給你答案, 我只能就自己了解的告訴你, 如果你使用XE10的話, "據說", 可直接導入jar 當成XE 的 FUNCTION, 就好像 ACTIVE X 一樣, 但這段確如你的無奈, 支援太少(其實支援不少, 但都藏在EMBT官網中, 讓有多餘時間的人有空上網去尋寶吧) 我對WEB上的認知也是等於0, 所以只能提供到這邊囉! 雖然還沒能解決問題,但還是挺感恩妳的!其實我試著寫了很多方法,都沒能解決~可能是自身的技術問題。JAVA確實可以導入,然後直接可以調用裏面的函數,但是不知道到底應該怎麽做才能夠將事件激活,像這個onGeolocationPermissionsShowPrompt,在XE裏他聲明的就是壹個procedure,就是壹個事件,但導入後,可以直接當函數去調用,就是不知道如何可以激活這個所謂的“函數”變成“事件”,哎,我已經1個星期試著不同的方法去解決了,但總是沒試成功,很想放棄用XE寫APP了,難道只能用原生去寫嗎?真希望XE能夠繼續火起來,現在用的人少了,幫助也少了,卡在那裏就沒法繼續了,可能也怪自己的水平吧~畢竟用WEB定位並顯示地圖這個功能還是很有必要的,要做附近顯示數據的功能。 |
JamesJuan
中階會員 發表:2 回覆:76 積分:80 註冊:2003-04-08 發送簡訊給我 |
您好
我不知道您到底想到做到什麼功能,但是想要釐清一件事情,你想做的事情,如果只用純瀏覽器,做的到還是做不到? 之前我有用 webbrower 調用 Google map 做到類似這樣,不知道對你想要達到的目標有沒有幫助? http://jamesjuantw.pixnet.net/blog/post/185758317 |
pcplayer99
尊榮會員 發表:146 回覆:790 積分:632 註冊:2003-01-21 發送簡訊給我 |
|
vivitor
一般會員 發表:1 回覆:6 積分:1 註冊:2015-10-01 發送簡訊給我 |
===================引 用 JamesJuan 文 章=================== 您好 我不知道您到底想到做到什麼功能,但是想要釐清一件事情,你想做的事情,如果只用純瀏覽器,做的到還是做不到? 之前我有用 webbrower 調用 Google map 做到類似這樣,不知道對你想要達到的目標有沒有幫助? http://jamesjuantw.pixnet.net/blog/post/185758317 您好,感謝您的回復。其實我做的是WEB調用騰訊的地圖進行定位並且顯示地圖的功能,也就顯示附近的功能,但是這個用瀏覽器打開的話,是會彈出窗口問妳是否允許打開地圖的。而這個在原生裏面就需要重載到onGeolocationPermissionsShowPrompt這個事件,然後在這個事件裏面用callback.invoke(origin, true, false); 設置他允許權限。妳可以測試壹下,用XE的WEBBROWSER打開http://map.qq.com/m/index/map,因為上面沒辦法重載那個辦法,自然就沒辦法使用定位,而直接用手機瀏覽器打開的話,他就會自動定位到妳當前的位置,所以沒辦法解決上面的辦法,就沒辦法實現像瀏覽器壹樣的功能了。而用原生的只要重載了onGeolocationPermissionsShowPrompt就成功了 |
JamesJuan
中階會員 發表:2 回覆:76 積分:80 註冊:2003-04-08 發送簡訊給我 |
|
vivitor
一般會員 發表:1 回覆:6 積分:1 註冊:2015-10-01 發送簡訊給我 |
我之前要回復pcplayer99的貼,但是居然沒辦法,只能回復壹條。所以就忘記回復了。其實像PCPLAYER99,還是沒有辦法實現我的要求。其實我總結下我要的結果,就是用XE的WEBBROWSER打開http://map.qq.com/m/index/map,然後他會像用手機瀏覽器壹樣打開會進行定位就可以了。但是用XE是沒辦法實現的,因為沒辦法重載onGeolocationPermissionsShowPrompt,並且調用callback.invoke(origin, true, false);控制權限。
===================引 用 JamesJuan 文 章=================== 認同 pcplayer99 因為我之前寫的時候,同時必須考量 android 與 iOS,所以並不會去考慮使用原生的寫法 如同 pcplayer99 所說的,App 調用 LocationSensor,再透過 JS 驅動 WebBrowser 即可 |
JamesJuan
中階會員 發表:2 回覆:76 積分:80 註冊:2003-04-08 發送簡訊給我 |
|
vivitor
一般會員 發表:1 回覆:6 積分:1 註冊:2015-10-01 發送簡訊給我 |
感謝您的答復,看了下妳的鏈接,是用JS與WEBBROWSER進行交互,從而DELPHI獲取位置,然後JS調用WEBBROWSER去實現跳轉位置。但是我有壹個問題再請教,如果說我的定位都寫在HTML裏面,這個時候就會涉及到webbrowser需要權限了,其實用手機帶的瀏覽器,他是會彈出要求妳是否允許調用定位的。這個就是上面說到的重載那個事件函數後的結果了。那像這樣的要求又如何實現呢?還是沒有辦法實現的?總結壹下我的問題:利用HTML寫獲取經違度,然後用DELPHI的WEBBROWSER去調用這個HTML有沒有辦法實現的?例如這個網站m.dinju.com,妳用瀏覽器他會定位妳當前的位置。如果妳用DELPHI,他是沒有辦法的。因為獲取經違度是在WEB裏的JS直接實現,不用DELPHI去獲取。
===================引 用 JamesJuan 文 章=================== http://jamesjuantw.pixnet.net/blog/post/204714955 |
JamesJuan
中階會員 發表:2 回覆:76 積分:80 註冊:2003-04-08 發送簡訊給我 |
|
NolanLiao
一般會員 發表:17 回覆:30 積分:9 註冊:2014-03-01 發送簡訊給我 |
|
vivitor
一般會員 發表:1 回覆:6 積分:1 註冊:2015-10-01 發送簡訊給我 |
不是的,其實我要的並不是轉壹圈調用JS去間接解決這個問題,我只希望DELPHI能夠跟原生JAVA壹樣能夠做到壹樣,如果沒辦法的話,那就說話還是不夠完善,還是用原生比較有安全感壹些~所以感恩所有幫助的朋友們。這個問題到現在為止還是沒有辦法像原生那樣重載onGeolocationPermissionsShowPrompt去解決
===================引 用 NolanLiao 文 章=================== 請問在 Google 地圖標示圖案您現在位置,並顯示周圍一定距離(例如:五公里)內的多個加油站,並在 Google 地圖標示圖案加油站位置,不知是否是您相要的 LBS 功能? |
NolanLiao
一般會員 發表:17 回覆:30 積分:9 註冊:2014-03-01 發送簡訊給我 |
|
vivitor
一般會員 發表:1 回覆:6 積分:1 註冊:2015-10-01 發送簡訊給我 |
非常感恩您,如果妳能夠實現以下的功能,就說明能夠實現我說的功能了:
用XE的WEBBROWSER打開http://map.qq.com/m/index/map這個網址(不要用JS交互),就直接打開,然後他會像用手機瀏覽器壹樣打開會進行定位就可以了。但是用XE是沒辦法實現的,因為沒辦法重載onGeolocationPermissionsShowPrompt,並且調用callback.invoke(origin, true, false);控制權限。 或是打开http://m.dinju.com也可以,我用原生打开都能实现,但不调用JS交互。但用DELPHI就没办法 ===================引 用 NolanLiao 文 章=================== 我上列詢問的功能,是可以百分之百全部使用 Delphi 程式語言完成,我想確認 LBS 需求功能,如果功能需求無誤,我來寫個範例程式並給同好下載 APK 試試. |
NolanLiao
一般會員 發表:17 回覆:30 積分:9 註冊:2014-03-01 發送簡訊給我 |
|
NolanLiao
一般會員 發表:17 回覆:30 積分:9 註冊:2014-03-01 發送簡訊給我 |
提供:
1.目前位置。 2.餿尋(附近)加油站。 3.移動定位(進入這個功能,至戶外走一端路,目前位置可動態移動顯示)。 RAD Studio 10 Seattle - Delphi 開發 尋找加油站 應用操作示範 提供 APK 下載,歡迎同好下載測試。 Apk: https://www.dropbox.com/s/c5dn04jwyyudtms/SearchGasStation.apk?dl=0 YouTube: https://www.youtube.com/watch?v=4n8v3D2pML8 |
NolanLiao
一般會員 發表:17 回覆:30 積分:9 註冊:2014-03-01 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
NolanLiao
一般會員 發表:17 回覆:30 積分:9 註冊:2014-03-01 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
NolanLiao
一般會員 發表:17 回覆:30 積分:9 註冊:2014-03-01 發送簡訊給我 |
|
Main Chen
高階會員 發表:29 回覆:135 積分:127 註冊:2002-10-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |