- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想定义一个SuggestBox
,它的行为类似于Google Maps 中的搜索栏。 :当您开始键入时,会出现以键入的字母开头的真实地址。
我想,我需要使用 Geocoder.getLocations(String address, LocationCallback callback) method ,但我不知道如何将它与 oracle 连接,建议框需要 oracle 来产生它的建议。
请问如何将 getLocations
方法与 SuggestOracle
连接起来?
最佳答案
我通过实现 SuggestBox
的子类解决了这个问题,它有自己的 SuggestOracle
。 AddressOracle
作为 Google map 服务的包装器处理,Google Maps API for GWT 中的类 Geocoder
为其提供抽象。
所以这是我的解决方案:
首先,我们为带有 Google map 建议的 SuggestBox 实现小部件
public class GoogleMapsSuggestBox extends SuggestBox {
public GoogleMapsSuggestBox() {
super(new AddressOracle());
}
}
然后我们实现 SuggestOracle,它包装了 Geocoder 异步方法抽象:
class AddressOracle extends SuggestOracle {
// this instance is needed, to call the getLocations-Service
private final Geocoder geocoder;
public AddressOracle() {
geocoder = new Geocoder();
}
@Override
public void requestSuggestions(final Request request,
final Callback callback) {
// this is the string, the user has typed so far
String addressQuery = request.getQuery();
// look up for suggestions, only if at least 2 letters have been typed
if (addressQuery.length() > 2) {
geocoder.getLocations(addressQuery, new LocationCallback() {
@Override
public void onFailure(int statusCode) {
// do nothing
}
@Override
public void onSuccess(JsArray<Placemark> places) {
// create an oracle response from the places, found by the
// getLocations-Service
Collection<Suggestion> result = new LinkedList<Suggestion>();
for (int i = 0; i < places.length(); i++) {
String address = places.get(i).getAddress();
AddressSuggestion newSuggestion = new AddressSuggestion(
address);
result.add(newSuggestion);
}
Response response = new Response(result);
callback.onSuggestionsReady(request, response);
}
});
} else {
Response response = new Response(
Collections.<Suggestion> emptyList());
callback.onSuggestionsReady(request, response);
}
}
}
这是 oracle 建议的一个特殊类,它只表示一个带有传递地址的字符串。
class AddressSuggestion implements SuggestOracle.Suggestion, Serializable {
private static final long serialVersionUID = 1L;
String address;
public AddressSuggestion(String address) {
this.address = address;
}
@Override
public String getDisplayString() {
return this.address;
}
@Override
public String getReplacementString() {
return this.address;
}
}
现在,您可以通过在 EntryPoint
类的 onModuleLoad()
方法中编写以下行,将新的小部件绑定(bind)到您的网页中:
RootPanel.get("hm-map").add(new GoogleMapsSuggestBox());
关于google-app-engine - 在 GWT/Java 的 SuggestBox 中建议地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479603/
我有一个文本框和一个建议框。我将值更改和键入处理程序附加到文本框,这样无论用户键入(或粘贴)到文本框中的内容都会在建议框中回显。我可以通过在每次值更改和键入事件时调用 showSuggestionLi
我正在使用 SuggestBox,我在获得我的应用程序的良好行为方面遇到了一些困难。 考虑以下建议列表: 1. lol 2. good evening3. goodbye4. end 5. salut
我有一个带有要传递给 SuggestBox 的对象的自定义 Oracle。然后我需要在从 de SuggestBox 中选择一个对象时取回它。 public HandlerRegistration a
我需要添加一个处理程序,该处理程序在单击选择时触发,然后验证该值。当前功能是在从建议框中记录整个值之前进行验证(通过模糊时的 textInput),因此未通过验证(当它应该通过时)。 这是我在 Tex
我有 SuggestBox 接受用户输入并使用 GWT 在弹出窗口中显示建议。 SuggestBox suggestBox = new SuggestBox(myData, new TextArea(
我想创建一个可以为我提供建议的列表框。我需要实现的确切内容是我们在其中输入网站地址的浏览器导航小部件。要实现的功能是这样的 当我们单击向下箭头时,我的列表框应为我提供以前导航过的 URL 的列表。此外
我创建了一个建议框并生成了包含大量文本的 HTML 页面,因此我可以滚动。1. 显示建议列表2. 滚动页面 带有建议列表的弹出框会随着页面滚动而移动,但我希望它既不会在页面滚动时隐藏,也不会随页面移动
我目前有一个我想使用的 GWT 文本框类,有时会根据某些参数将其转换(添加功能)为建议框。这可能吗? 我不想创建一种新型的小部件,因为那样我会失去我的文本框的所有当前功能,我只想添加建议框的功能...
我尝试了这边的示例代码来学习 GWT 中的 SuggestBox。 http://gwt.google.com/samples/Showcase/Showcase.html#!CwSuggestBox
您好,我想在页面加载时关注 SuggestBox。我找不到任何用于此目的的事件监听器,所以我猜我必须定义我自己的处理程序来执行此操作(也许使用 native textbox.focus 执行某些操作?
我在向应用程序添加 SuggestBox 时遇到一些问题。 UiBinder 模板如下所示: ... Add Actor .... 我正在通过扩展 MultiWordSuggest
我正在寻找一种方法来在 中指定占位符属性元素,在 GWT 中。我知道 元素允许指定该属性,但我决定切换到 SuggestBox 元素而不是输入元素。 谁能帮帮我? 最佳答案 SuggestBox 的
我正在使用一个简单的城市 SuggestBox,我从数据库中获取城市列表并将它们放入 GWT suggestBox oracle 中。 之后,用户可以从 suggestBox 建议中选择他的城市,并且
有什么办法可以到SuggestBox至 CellTable ?也许还有另一个解决方案 SuggestBox ? 我需要获得带有建议功能的可编辑单元格吗? 我正在使用 GWT 2.4。 最佳答案 我不认
我正在使用SuggestBox在 GWT 中创建一个文本框,其中包含一个不错的建议列表,如下所示: public void onModuleLoad() { MultiWordSuggestO
我是 GWT 的新手。我有一个简单的 SuggestBox,它使用 MultiWordSuggestOracle 填充。用户将他们的数据输入到这个 SuggestBox 中,如果他们找到与现有建议匹配
我的标题可能有点模糊,但我想让我的建议框来建议像这是当我在文本框中键入字母时: 在建议框中输入的字母:A 一只美洲豹 一个苹果 氩氩 不这样: 建议框中输入的字母:A 一只羊驼一只可爱 一个苹果一个一
我正在使用 SuggestBox 让用户选择值。但是,当列表中只有一个值时,我会在 SuggestBox 中设置该值,并且我希望该字段不可编辑。 我正在尝试以下操作,但现在该组件在 UI 上不可见。
GWT SuggestBox 的搜索结果显示在 中元素,其中(显然)包含一个 每个结果的元素。这会导致结果显示彼此重叠,如下所示: 相反,我希望我可以并排显示结果。由于结果包含在 内元素,我想知道
有谁知道如何: 1) 向 SuggestBox 创建的弹出窗口添加滚动条? 2) 如何高效地自定义SuggestBox的外观(CSS)? 我想在尽可能不触及实际实现的情况下进行上述更改。此解决方案还应
我是一名优秀的程序员,十分优秀!