32 #include <boost/lexical_cast.hpp>
33 #include <boost/random.hpp>
38 #include <json/json.h>
51 network_manager_(this)
57 base_url_ =
"https://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial?uriScheme=https&include=ImageryProviders&key={api_key}";
76 boost::random::uniform_int_distribution<> random(0, (
int)
subdomains_.size() - 1);
77 url.replace(QString::fromStdString(
"{subdomain}"),
subdomains_[random(
rng_)]);
79 url.replace(QString::fromStdString(
"{quadkey}"),
GenerateQuadKey(level, x, y));
99 url.replace(QString::fromStdString(
"{api_key}"),
api_key_);
111 for (int32_t i = level; i > 0; i--)
113 int32_t bitmask = 1 << (i-1);
115 if ((x & bitmask) != 0)
119 if ((y & bitmask) != 0)
123 quadkey.append(QString::number(digit));
131 QString reply_string(reply->readAll());
134 reader.parse(reply_string.toStdString(),
root);
139 Q_EMIT
ErrorMessage(
"Bing authorization error: " + boost::lexical_cast<std::string>(status));
162 if (image_url.empty())
168 tile_url_ = QString::fromStdString(image_url);
175 Q_EMIT
ErrorMessage(
"No image URL subdomains; maybe that's ok sometimes?");
181 subdomains_.push_back(QString::fromStdString(subdomain.asString()));