1

我正在实现一种让用户指定他们的时区的方法。那里没有什么新鲜事。当用户需要从数百个选项的列表中进行选择,但可能不立即知道列表中的正确值时,我想听听人们说什么是处理案例的好策略。我知道我可以使用自动完成之类的东西,但这只有在人们知道他们在寻找什么的情况下才有效。当然,国家应该是显而易见的,但是......最低公分母(有些人很愚蠢......像我一样;)。

有超过 400 个不同的 iso 时区(不包括 EST、PST 等,我不包括在内)。那是一个很长的清单。如果我们让用户首先选择他们所在的国家,例如另一个选择菜单,则可以方便地划分。但是有200多个国家。那么如何呈现 200 个易于合作且高效的国家?

我已经在一个 jar 中创建并打包了许多类,以从 Olson 时区文件(iso3166.tab 和 zone.tab)中读取,并提供时区和时区国家/地区的数组列表,包括将指定国家/地区的优先级放在列表的顶部。但现在我想学习一种更好的方式来展示国家和时区。我自己做了这个,因为我发现它是一种提取和关联国家代码和时区代码的更简单、更干净的方法。

4

1 回答 1

0

对于您的特定要求,我可以考虑使用您在以格林威治为中心的 Ubuntu 等 Linux 发行版中看到的世界地图。然后为您拥有的数据放置标记并让用户选择最近的标记。

请参阅Ubuntu的时区选择

为此,您可以使用 Primefaces GMAP组件并添加如下叠加层:

 LatLng coord1 = new LatLng(36.885233, 30.702323); 
 PlaceResult placeResultObj1 = new  new PlaceResult("660")

 //Basic marker  
 simpleModel.addOverlay(new Marker(coord1, "Konyaalti", placeResultObj1)); 

PlaceResult.java

public class PlaceResult {
    private String utc_offset;

    public PlaceResult(String utc_offset){
        this.utc_offset = utc_offset;
    }

    public String getUtc_offset() {
        return utc_offset;
    }

    public void setUtc_offset(String utc_offset) {
        this.utc_offset = utc_offset;
    }

}

另一种方法是使用 Google 地图中的 Places 库。使用它可以google.maps.places.PlaceResult通过各种方法获取对象,我喜欢可以选择城市的自动完成功能。选择城市后,您可以在信息窗口中显示 utc_offset。

你可以看看这个演示

目前,似乎大多数城市都没有设置 utc_offset。我发现有 utc_offset 的地址之一是

Newy 机​​场穿梭巴士在澳大利亚。然后您可以将 off_set 作为输入隐藏参数传递,以将值提交给服务器。

也可以看看:

于 2012-10-23T02:25:00.980 回答