線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3552
推到 Plurk!
推到 Facebook!

很無耐,XE寫APP的幫助太少了。關於WEBBROWSER如何支持LBS定位的問題

尚未結案
vivitor
一般會員


發表:1
回覆:6
積分:1
註冊:2015-10-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2015-10-02 02:10:09 IP:183.46.xxx.xxx 訂閱
為了令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.
版主


發表:571
回覆:3881
積分:3666
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2015-10-02 14:59:23 IP:118.160.xxx.xxx 未訂閱
抱歉, 不是要給你答案, 我只能就自己了解的告訴你,
如果你使用XE10的話, "據說", 可直接導入jar 當成XE 的 FUNCTION, 就好像 ACTIVE X 一樣,
但這段確如你的無奈, 支援太少(其實支援不少, 但都藏在EMBT官網中, 讓有多餘時間的人有空上網去尋寶吧)
我對WEB上的認知也是等於0, 所以只能提供到這邊囉!
vivitor
一般會員


發表:1
回覆:6
積分:1
註冊:2015-10-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2015-10-02 20:34:05 IP:116.26.xxx.xxx 訂閱

===================引 用 P.D. 文 章===================
抱歉, 不是要給你答案, 我只能就自己了解的告訴你,
如果你使用XE10的話, "據說", 可直接導入jar 當成XE 的 FUNCTION, 就好像 ACTIVE X 一樣,
但這段確如你的無奈, 支援太少(其實支援不少, 但都藏在EMBT官網中, 讓有多餘時間的人有空上網去尋寶吧)
我對WEB上的認知也是等於0, 所以只能提供到這邊囉!


雖然還沒能解決問題,但還是挺感恩妳的!其實我試著寫了很多方法,都沒能解決~可能是自身的技術問題。JAVA確實可以導入,然後直接可以調用裏面的函數,但是不知道到底應該怎麽做才能夠將事件激活,像這個onGeolocationPermissionsShowPrompt,在XE裏他聲明的就是壹個procedure,就是壹個事件,但導入後,可以直接當函數去調用,就是不知道如何可以激活這個所謂的“函數”變成“事件”,哎,我已經1個星期試著不同的方法去解決了,但總是沒試成功,很想放棄用XE寫APP了,難道只能用原生去寫嗎?真希望XE能夠繼續火起來,現在用的人少了,幫助也少了,卡在那裏就沒法繼續了,可能也怪自己的水平吧~畢竟用WEB定位並顯示地圖這個功能還是很有必要的,要做附近顯示數據的功能。
JamesJuan
中階會員


發表:2
回覆:75
積分:80
註冊:2003-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2015-10-03 16:11:38 IP:60.250.xxx.xxx 未訂閱
您好

我不知道您到底想到做到什麼功能,但是想要釐清一件事情,你想做的事情,如果只用純瀏覽器,做的到還是做不到?

之前我有用 webbrower 調用 Google map 做到類似這樣,不知道對你想要達到的目標有沒有幫助?
http://jamesjuantw.pixnet.net/blog/post/185758317
pcplayer99
尊榮會員


發表:142
回覆:739
積分:591
註冊:2003-01-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2015-10-03 21:14:39 IP:183.15.xxx.xxx 訂閱
没那么复杂。

既然是自己写 APP 而不是直接用别人的地图功能,自己的 APP 去读 GPS 坐标就好了。读到以后,调用地图提供的 Java-S-c-r-i-p-t 把自己的坐标点打到浏览器里面的地图上去就好了。
vivitor
一般會員


發表:1
回覆:6
積分:1
註冊:2015-10-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2015-10-04 02:05:19 IP:116.26.xxx.xxx 訂閱

===================引 用 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
回覆:75
積分:80
註冊:2003-04-08

發送簡訊給我
#7 引用回覆 回覆 發表時間:2015-10-06 16:55:26 IP:60.250.xxx.xxx 未訂閱
認同 pcplayer99
因為我之前寫的時候,同時必須考量 android 與 iOS,所以並不會去考慮使用原生的寫法
如同 pcplayer99 所說的,App 調用 LocationSensor,再透過 JS 驅動 WebBrowser 即可
vivitor
一般會員


發表:1
回覆:6
積分:1
註冊:2015-10-01

發送簡訊給我
#8 引用回覆 回覆 發表時間:2015-10-07 21:01:29 IP:116.26.xxx.xxx 訂閱
我之前要回復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
回覆:75
積分:80
註冊:2003-04-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2015-10-08 17:53:52 IP:59.127.xxx.xxx 未訂閱
vivitor
一般會員


發表:1
回覆:6
積分:1
註冊:2015-10-01

發送簡訊給我
#10 引用回覆 回覆 發表時間:2015-10-08 23:44:34 IP:116.26.xxx.xxx 訂閱
感謝您的答復,看了下妳的鏈接,是用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
回覆:75
積分:80
註冊:2003-04-08

發送簡訊給我
#11 引用回覆 回覆 發表時間:2015-10-09 00:08:29 IP:59.127.xxx.xxx 未訂閱
用DELPHI的WEBBROWSER去調用HTML,不會彈出「是否允許調用定位」的對話框,所以當然沒有權限的問題
NolanLiao
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#12 引用回覆 回覆 發表時間:2015-10-14 10:14:48 IP:60.250.xxx.xxx 訂閱
請問在 Google 地圖標示圖案您現在位置,並顯示周圍一定距離(例如:五公里)內的多個加油站,並在 Google 地圖標示圖案加油站位置,不知是否是您相要的 LBS 功能?
vivitor
一般會員


發表:1
回覆:6
積分:1
註冊:2015-10-01

發送簡訊給我
#13 引用回覆 回覆 發表時間:2015-10-14 10:28:07 IP:183.46.xxx.xxx 訂閱
不是的,其實我要的並不是轉壹圈調用JS去間接解決這個問題,我只希望DELPHI能夠跟原生JAVA壹樣能夠做到壹樣,如果沒辦法的話,那就說話還是不夠完善,還是用原生比較有安全感壹些~所以感恩所有幫助的朋友們。這個問題到現在為止還是沒有辦法像原生那樣重載onGeolocationPermissionsShowPrompt去解決
===================引 用 NolanLiao 文 章===================
請問在 Google 地圖標示圖案您現在位置,並顯示周圍一定距離(例如:五公里)內的多個加油站,並在 Google 地圖標示圖案加油站位置,不知是否是您相要的 LBS 功能?
NolanLiao
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#14 引用回覆 回覆 發表時間:2015-10-14 11:04:51 IP:60.250.xxx.xxx 訂閱
我上列詢問的功能,是可以百分之百全部使用 Delphi 程式語言完成,我想確認 LBS 需求功能,如果功能需求無誤,我來寫個範例程式並給同好下載 APK 試試.
vivitor
一般會員


發表:1
回覆:6
積分:1
註冊:2015-10-01

發送簡訊給我
#15 引用回覆 回覆 發表時間:2015-10-14 11:22:24 IP:183.46.xxx.xxx 訂閱
非常感恩您,如果妳能夠實現以下的功能,就說明能夠實現我說的功能了:
用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
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#16 引用回覆 回覆 發表時間:2015-11-12 00:16:11 IP:60.250.xxx.xxx 訂閱
行動開發成功案例分享研討會
11 月 25 日 (三)
http://embarcadero.qcomgroup.com.tw/EDM/edm_seminar_20151125.htm
地圖定位服務:Google 地圖定位 LBS 適地性服務 App 尋找加油站。
NolanLiao
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#17 引用回覆 回覆 發表時間:2015-11-24 09:24:52 IP:60.250.xxx.xxx 訂閱
提供:
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
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#18 引用回覆 回覆 發表時間:2015-11-24 23:00:08 IP:60.250.xxx.xxx 訂閱
RAD Studio 10 Seattle - Delphi 開發 動態定位 應用操作示範 
https://www.youtube.com/watch?v=Zp1wVbxhbwo

Location Based Service, LBS, 移動定位服務
P.D.
版主


發表:571
回覆:3881
積分:3666
註冊:2006-10-31

發送簡訊給我
#19 引用回覆 回覆 發表時間:2015-11-24 23:53:40 IP:118.160.xxx.xxx 未訂閱
或許這個請求太突兀, APK看的到卻吃不到, 對於真正想學習XE的同好來說幫助不大, 所以如果能有範例可以觀摩, 相信可以增加大家的學習興趣, 感恩!
NolanLiao
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#20 引用回覆 回覆 發表時間:2015-11-25 09:43:50 IP:60.250.xxx.xxx 訂閱
2015/11/25 研討會現場會有完整原始程式碼解說,歡迎同好報名參加。

行動開發成功案例分享研討會
http://embarcadero.qcomgroup.com.tw/EDM/edm_seminar_20151125.htm
taishyang
站務副站長


發表:377
回覆:5486
積分:4552
註冊:2002-10-08

發送簡訊給我
#21 引用回覆 回覆 發表時間:2015-11-25 11:40:17 IP:59.127.xxx.xxx 訂閱
希望會後可以release demo source code, 相信對推廣會很有幫助^^

===================引 用 NolanLiao 文 章===================
2015/11/25 研討會現場會有完整原始程式碼解說,歡迎同好報名參加。

行動開發成功案例分享研討會
http://embarcadero.qcomgroup.com.tw/EDM/edm_seminar_20151125.htm
NolanLiao
一般會員


發表:10
回覆:19
積分:5
註冊:2014-03-01

發送簡訊給我
#22 引用回覆 回覆 發表時間:2015-11-27 14:55:00 IP:60.250.xxx.xxx 訂閱
內有諸多原始程式碼內容展示與解說。

影音內容中文解說

RAD Studio 10 Seattle - 高速公路即時路況 & 尋找加油站 開發分享與解說
YouTube:
https://www.youtube.com/watch?v=J03O9fwq23Q
Main Chen
高階會員


發表:29
回覆:134
積分:127
註冊:2002-10-07

發送簡訊給我
#23 引用回覆 回覆 發表時間:2015-11-27 16:22:42 IP:175.181.xxx.xxx 訂閱
感謝廖兄無私分享, 受益良多。

===================引 用 NolanLiao 文 章===================
內有諸多原始程式碼內容展示與解說。

影音內容中文解說

RAD Studio 10 Seattle - 高速公路即時路況 & 尋找加油站 開發分享與解說
YouTube:
https://www.youtube.com/watch?v=J03O9fwq23Q
系統時間:2017-10-24 13:57:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!