Обновите веб-представление, выбрав аннотацию к карте - PullRequest
0 голосов
/ 07 июня 2018

Я использую Appcelerator Alloy.У меня есть карта с несколькими аннотациями и веб-вид снизу.Я хочу иметь возможность выбрать аннотацию на карте, и чтобы в веб-представлении отображалась веб-страница на основе этой аннотации.

Так, например, выберите аннотацию Беларусь, и в веб-представлении отобразится страница Википедии для Беларуси.

Вот что у меня примерно так:

Map.xml

<Alloy>
<Window title="Map">
    <Module method="createView" module="ti.map"  id="mapview" height="250" top="0" >
        <Annotation id="belarus" onClick="refresh" url="https://en.wikipedia.org/wiki/Belarus" />
        <Annotation id="belgium" />
        <Annotation id="bosniaAndHerzegovina" />
        <Annotation id="bulgaria" />
    </Module>
    <WebView id="webview" url="https://en.wikipedia.org/wiki/Austria" top="252" />
</Window>

(Js - это больше псевдокод, чем все, потому что яя не уверен, что на самом деле должно идти туда) Map.Js

function refresh(){
//set url based on which annotation was selected
var url = $.this.url;

if(url != null){
    //update the web view with the new url
$.webview.reload(url);  };

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Оказывается, это была довольно простая ошибка.Вместо того, чтобы вызывать вызов onCLick для аннотации, он должен был быть в самом модуле карты.

.XML-код

<Alloy>
<Window title="Map">
    <Module method="createView" module="ti.map"  onClick="refresh" id="mapview" height="250" top="0" >
        <Annotation id="belarus" />
        <Annotation id="belgium" />
        <Annotation id="bosniaAndHerzegovina" />
        <Annotation id="bulgaria" />
    </Module>
    <WebView id="webview" url="https://en.wikipedia.org/wiki/Austria" top="252" />
    </WebView>
</Window>

.js Код

function refresh(evt){
var url = evt.annotation.url;
$.webview.url = url;};

miga очень помогла с URL веб-просмотра.

0 голосов
/ 07 июня 2018

Если вы проверите документацию, вы найдете ответ:

На http://docs.appcelerator.com/platform/latest/#!/api/Modules.Map вы увидите пример с аннотацией:

mapview.addEventListener('click', function(evt) {
    Ti.API.info("Clicked " + evt.clicksource + " on " + evt.latitude + "," + evt.longitude);
});

и нана странице веб-просмотра: http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.WebView вы можете видеть, что вам нужно установить url для изменения веб-просмотра.

Так что внутри события click сверху вы будете делать что-то вроде:

$.webview.url = "https://...";

и он загрузит страницу.Проверьте идентификатор источника кликов, чтобы увидеть, какая аннотация была нажата

...