单击标记时,摄像机的默认行为是将其置于屏幕中心,但由于我通常在信息窗口中有长文本描述,因此实际更改摄像机位置以使标记位于底部时更方便屏幕(使信息窗口位于屏幕中央).我想我应该能够通过覆盖onMarkerClick函数来做到这一点(当此函数返回true时,默认行为被取消)
@Override
public boolean onMarkerClick(final Marker marker) {
// Google sample code comment : We return false to indicate that we have not
// consumed the event and that we wish
// for the default behavior to occur (which is for the camera to move
// such that the
// marker is centered and for the marker's info window to open, if it
// has one).
marker.showInfoWindow();
CameraUpdate center=
CameraUpdateFactory.newLatLng(new LatLng(XXXX,
XXXX));
mMap.moveCamera(center);//my question is how to get this center …
Run Code Online (Sandbox Code Playgroud) 是否可以使用纯CSS生成随机颜色而不使用javascript?这可能是不可能的,但我仍然很好奇.
我下面的代码给了我一个NullReferenceException
和堆栈跟踪告诉我问题在于Count
方法,所以我很确定在某个时候foo
,bar
或者baz
是null
.
我的代码:
IQueryable<IGrouping<string, Referral>> queryable= ...;
var dict = queryable.ToDictionary(g => g.Key.ToString(),
g => g.Count(r => r.foo.bar.baz.dummy == "Success"));
Run Code Online (Sandbox Code Playgroud)
我想知道处理null
案件的简洁方法是什么.我知道在C#6.0中我可以做到foo?.bar?.baz?.dummy
,但我正在研究的项目不是C#6.0
使用Google Map API V3时,我可以通过以下方式添加自定义属性:
var marker = new google.maps.Marker({
position: userLocation,
map: myGoogleMap,
animation: google.maps.Animation.DROP,
icon: avatar,
title: userName,
customProperty1: bla,
customProperty2: bla,
customProperty3: bla,
...
Run Code Online (Sandbox Code Playgroud)
});
我想知道我是否可以为API V2 Android做同样的事情,我想这样做的原因是每个标记的每个信息窗口都需要知道该标记的一些信息.而我正在努力实现以下render
功能:
private void render(Marker marker, View view) {
int badge = R.drawable.android_face;
if (marker.customProperty)
//here I need to know this property to decide which image to use
badge = R.drawable.bla;
((ImageView) view.findViewById(R.id.badge))
.setImageResource(badge);
}
Run Code Online (Sandbox Code Playgroud) 为了实现这一点,我觉得我只需要覆盖onMarkerClick
并检查点击标记的infoWindow是否已经打开,但令我惊讶的是clickedMarker.isInfoWindowShown()
总是返回false ...
我的代码:
@Override
public boolean onMarkerClick(final Marker clickedMarker) {
if(clickedMarker.isInfoWindowShown()) {
clickedMarker.hideInfoWindow();
System.out.println("was showing");
} else {
clickedMarker.showInfoWindow();
System.out.println("not showing");
}
}
Run Code Online (Sandbox Code Playgroud)
它总是告诉我infoWindow"没有显示"这是不对的......我可以通过保留参考来解决这个问题,userLastClickedMarker
但我想知道上面我做错了什么.
谢谢!
编辑:
我更改了代码以调试此问题:
System.out.println(clickedMarker.isInfoWindowShown());
if(clickedMarker.isInfoWindowShown()) {
clickedMarker.hideInfoWindow();
System.out.println(" showing");
} else {
clickedMarker.showInfoWindow();
System.out.println("not showing");
}
System.out.println(clickedMarker.isInfoWindowShown());
Run Code Online (Sandbox Code Playgroud)
我发现isInfoWindowShown()
在onMarkerClick方法中可以正常工作但不会正确"记住"它.而且我发现有人已经指出这是一个错误......
https://code.google.com/p/gmaps-api-issues/issues/detail?id=5408
问题1:
我正在使用C++ 11,我正在学习.我意识到我可以用两对来做到这一点:
pair<pair<<#class _T1#>, <#class _T2#>>, <#class _T3#>>
Run Code Online (Sandbox Code Playgroud)
这是最好的方式吗?
问题2:
如果我不需要不同的类型,两个项目的类型相同,使用对是浪费,那么我应该使用什么?三件物品?(同样的类型)
我遇到了这个看起来非常有趣的问题.我们想要观看所有电影,但它们仅在以下时间显示:
movieA : 15
movieB : 14, 15, 17
movieC : 15, 17
movieD : 15, 20
Run Code Online (Sandbox Code Playgroud)
我们可以看到15分,B分14分,C分17分和D分数20分,所以可以全部观看.请注意,你不能在15看C,不可行.
你猜到的问题是我们是否可以全部看到它们.
显然,我们可以通过回溯来解决它,尝试所有可能性.有更好的方法吗?我有一个想法,首先从具有最少可用时间的电影开始,这样我们可以更快地找到解决方案,如果有解决方案,最坏的情况时间复杂性仍然是相同的.
那个问题有更好的算法吗?
PS正如@gen所问,我忘了指出每部电影都是1小时,所以如果你在14:00看一部电影,你就不会错过15点的电影.谢谢你的询问.
我正在将时间从CST转换为当地时间,但getTimeZone
似乎无法正常工作.
String cstTime = "2013-06-21 14:00:00";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("CST"));
Date date = null;
try {
date = simpleDateFormat.parse(cstTime);
} catch (ParseException e) {
System.out.println("Parse time error");
e.printStackTrace();
}
TimeZone destTz = TimeZone.getDefault();//here I should get EDT on my phone
simpleDateFormat.setTimeZone(destTz);
String convertedLocalTime = simpleDateFormat.format(date);
//the converted time I get is "2013-06-21 10:00:00"
//but it should be "2013-06-21 15:00:00"
Run Code Online (Sandbox Code Playgroud)
它似乎是使用GMT而不是CST,以下是我在调试时得到的:
String abc = TimeZone.getTimeZone("CST").toString();
System.out.println("CST:"+abc);
Output:
I/System.out(19404): CST:java.util.SimpleTimeZone[id=GMT,offset=0,dstSavings=3600000,
useDaylight=fals??e,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,
startTime=0,en??dMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0]
Run Code Online (Sandbox Code Playgroud)
它是否使用GMT?为什么..提前致谢!
编辑:
终于通过使用它得到了它
simpleDateFormat.setTimeZone(TimeZone.getTimeZone( …
Run Code Online (Sandbox Code Playgroud) 我知道endl
或打电话flush()
会冲洗它.我也知道,当你调用cin
后cout
,它刷新了.并且当程序退出时.还有其他情况会cout
冲洗吗?
我刚写了一个简单的循环,我没有冲洗它,但我可以看到它被打印到屏幕上.为什么?谢谢!
for (int i =0; i<399999; i++) {
cout<<i<<"\n";
}
Run Code Online (Sandbox Code Playgroud)
它完成的时间与endl
大约7秒相同.
for (int i =0; i<399999; i++) {
cout<<i<<endl;
}
Run Code Online (Sandbox Code Playgroud) 使用std :: array时,我可以一次分配值:
std::array<int, 3> a2 = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)
但是当上面的数组合并到一个地图中时,我不知道最好的方法:
using namespace std;
map <string, array<int, 3>> myMap;
//I'm doing it like below now...
array<int, 3> tempArray = {1,2,3}; // can I save this line somehow?
myMap[myString] = tempArray;
Run Code Online (Sandbox Code Playgroud)
如果这确实是正确的方法,也请告诉我.谢谢!