我制作了一个使用绘图管理器的地图应用程序(并实现了可选择的形状).该程序的工作原理如下:在单击按钮后完成绘制多边形的路径时,将映射到多边形上.
在此过程之后编辑多边形时,我希望再次调用映射函数.但是我不能让这部分工作:
我尝试使用以下代码,但我总是收到错误,因为添加此侦听器时尚未选择任何形状.我能做什么?
google.maps.event.addListener(selectedShape, 'set_at', function() {
console.log("test");
});
google.maps.event.addListener(selectedShape, 'insert_at', function() {
console.log("test");
});
Run Code Online (Sandbox Code Playgroud)
重要的代码:
function showDrawingManager(){
var managerOptions = {
drawingControl: true,
drawingControlOptions: {
position: google.maps.ControlPosition.TOP_CENTER,
drawingModes: [google.maps.drawing.OverlayType.MARKER, google.maps.drawing.OverlayType.POLYLINE, google.maps.drawing.OverlayType.POLYGON]
},
markerOptions: {
editable: true,
icon: '/largeTDGreenIcons/blank.png'
},
polygonOptions: {
fillColor: "#1E90FF",
strokeColor: "#1E90FF",
},
polylineOptions: {
strokeColor: "#FF273A"
}
}
var drawingManager = new google.maps.drawing.DrawingManager(managerOptions);
drawingManager.setMap(map);
return drawingManager;
}
function clearSelection() {
if (selectedShape) {
console.log("clearSelection");
selectedShape.setEditable(false);
selectedShape = null;
numberOfShapes--;
}
}
function setSelection(shape) {
console.log("setSelection"); …Run Code Online (Sandbox Code Playgroud) 情况: 我正在尝试将A*算法转换为c ++代码,其中不允许对角线移动,但我有一些奇怪的行为.
我的问题:即使没有对角线移动,也需要考虑对角线成本.当我在没有对角线成本的情况下进行计算时(使用'启发式'因子10),我总是有相同的fscore为80(你可以在我计算fscore,gscore和hscore的第二张图片中看到这一点)这看起来很奇怪我.因此(几乎所有节点都具有80的fscore),algorimth似乎不起作用,因为许多节点具有相同的最小fscore为80.
或者这是正常行为,并且没有对角线的A*星实现必须执行更多工作(因为更多节点具有相同的最小fscore)?


我不认为这个问题与我的代码有什么关系,而不是我的推理,但我仍然发布它:
pathFind.cpp
#include "pathFind.h"
#include <queue>
#include "node.h"
#include <QString>
#include <QDebug>
#include <iostream>
/** Pathfinding (A* algo) using Manhatten heuristics and assuming a monotonic, consistent
* heuristic (the enemies do not change position)
*
* TODO: add variable terrain cost
**/
//dimensions
const int horizontalSize = 20;
const int verticalSize = 20;
//nodes sets
static int closedNodes[horizontalSize][verticalSize]; //the set of nodes already evaluated
static int openNodes[horizontalSize][verticalSize]; // the set of nodes to …Run Code Online (Sandbox Code Playgroud) 我有一个QString包含一系列数字的例子
QString path = "11100332001 234 554 9394";
Run Code Online (Sandbox Code Playgroud)
我想迭代可变长度字符串
for (int i=0; i<path.length(); i++){
}
Run Code Online (Sandbox Code Playgroud)
并能够int单独访问每个号码.
但是,我无法这样做.问题:如何将QString数字转换为数组int?
我知道我可以将其转换QString为int使用,path.toInt()但这对我没有帮助.
当我尝试将它转换为char时,我得到一个错误:cannot convert 'const QChar to char'.
for (int i=0; i<path.length(); i++){
char c = path.at(i);
int j = atoi(&c);
//player->movePlayer(direction);
}
Run Code Online (Sandbox Code Playgroud) 我有点困惑:
long v = 0;
v <<= 8;
v |= 230;
Run Code Online (Sandbox Code Playgroud)
我知道 << 是带符号的左移运算符,而 | 按位包含 OR 但我对 equals 的作用感到困惑?
所以拳头 v 是 0。那么 << 没有任何效果?那么它等于 1000 但接下来会发生什么呢?
编辑:我已经编辑了标题,以便其他人更好地找到这个问题:添加了“复合运算符”
是否有解决以下问题的行业标准:
故事; 我有一个程序(=>游戏),它将状态(=> level,..)保存在xml文件中; 这个状态不应该是用户可编辑的; 我想阻止人们编写可修补我的xml和程序状态的补丁软件.
您想要保护您的xml文件.您可以通过加密来完成此操作.不过你怎么用钥匙?
因为有人可以随时进行逆向工程(打开你的dll)阅读密钥......?
public static string Encrypt (string toEncrypt)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes ("12345678901234567890123456789012");
// 256-AES key
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes (toEncrypt);
RijndaelManaged rDel = new RijndaelManaged ();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
// http://msdn.microsoft.com/en-us/library/system.security.cryptography.ciphermode.aspx
rDel.Padding = PaddingMode.PKCS7;
// better lang support
ICryptoTransform cTransform = rDel.CreateEncryptor ();
byte[] resultArray = cTransform.TransformFinalBlock (toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String (resultArray, 0, resultArray.Length);
}
public static string Decrypt (string toDecrypt)
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes ("12345678901234567890123456789012");
// …Run Code Online (Sandbox Code Playgroud) 系统如何知道例如在svn环境中,如果输入的密码正确,则使用DES crypt散列将帐户存储在.passwd中.
纠正我如果我错了,但如果我转换某个密码,例如"测试"使用DES哈希,因为盐有很多可能性.系统(我想象它只是比较生成的哈希值)如何知道输入的密码是否正确?
这可能很简单,但让我感到困惑.
int x;
int *p = NULL;
int *q = &x;
Run Code Online (Sandbox Code Playgroud)
什么时候会发生
q = p; // Address where q points to equals NULL .
&x = q; // I don't think this is possible .
*q = 7; // Value of memory where q is pointing to is 7?
*q = &x // That's just placing the address of x into memory where q points to right?
x = NULL;
Run Code Online (Sandbox Code Playgroud) c++ ×2
a-star ×1
c ×1
c# ×1
des ×1
encryption ×1
events ×1
google-maps ×1
hash ×1
java ×1
javascript ×1
null ×1
operators ×1
path-finding ×1
pointers ×1
qstring ×1
qt ×1