我正在使用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) 我花了好几个小时来处理这个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平等true和myMap.get("key1") instanceof Float平等false.
我在线上Double value1 = myMap.get("key1").doubleValue();或在线上得到错误Float value1 = myMap.get("key1");