小编Kat*_* L.的帖子

Angular google maps搜索框指令:尝试限制搜索时不会触发事件(使用自动完成选项)

我正在使用Angular Google Maps来获取带有搜索框的地图.

我试图将搜索限制为"地址"和国家/地区(法国),因此我想使用搜索框指令的"自动填充"选项,如文档中所述.

问题是autocomplete:true我的代码中的位确实有效地限制了搜索,但它阻止了事件的触发(地图和标记不会更新).但是控制台中没有错误.

但是,如果我注释掉或删除autocomplete:true,则事件触发(地图和标记被刷新),但搜索不限于法国和地址......

这是我的代码:

        var events = {
            places_changed:function (searchBox) {
                var place = searchBox.getPlaces();
                if (!place || place == 'undefined' || place.length == 0) {
                    console.log('no place data :(');
                    return;
                }

                // refresh the map
                $scope.map = {
                    center:{
                        latitude:place[0].geometry.location.lat(),
                        longitude:place[0].geometry.location.lng()
                    },
                    zoom:10
                };

                // refresh the marker
                $scope.marker = {
                    id:0,
                    options:{ draggable:false },
                    coords:{
                        latitude:place[0].geometry.location.lat(),
                        longitude:place[0].geometry.location.lng()
                    }
                };

            }
        };

        $scope.searchbox = {
            template:'searchbox.tpl.html',
            events:events,
            options:{ …
Run Code Online (Sandbox Code Playgroud)

google-maps autocomplete search-box angularjs

3
推荐指数
1
解决办法
2544
查看次数

ClassCastException Double to Float,即使我没有使用Double

我花了好几个小时来处理这个bug,对我来说这是一个非常奇怪的行为:

这是我的代码:

Map<String, Float> myMap = myService.calculateData(DateTime startDate, DateTime endDate);

if (!myMap.isEmpty()) {
    Double value1 = myMap.get("key1").doubleValue(); 
}
Run Code Online (Sandbox Code Playgroud)

在调试器中,一切正常,我可以看到所有的值,myMap我可以得到value1Double 的值.

但是,IntelliJ会抛出错误:

java.lang.ClassCastException:java.lang.Double无法强制转换为java.lang.Float

我试过更换 Double value1 = myMap.get("key1").doubleValue();

用: Float value1 = myMap.get("key1");

我得到完全相同的错误,即使我没有使用任何双倍!

另外我不明白为什么它说Double不能被转换为Float,当我实际上试图将Float转换为Double时,所以它是另一种方式.

更新:回答路易斯和安德烈亚斯的建议,myMap.get("key1").getClass()给我Double,myMap.get("key1") instanceof Double平等truemyMap.get("key1") instanceof Float平等false.

我在线上Double value1 = myMap.get("key1").doubleValue();或在线上得到错误Float value1 = myMap.get("key1");

java casting

2
推荐指数
1
解决办法
1332
查看次数