2017-03-29 23 views
0

QTを使用して、Google静的地図画像をダウンロードし、GUIアプリケーションで地図を表示するアプリケーションを実装しようとしています。このようにして、ローカルに保存された画像は、インターネットにアクセスできない場合に使用できます。QTでGoogle静的地図画像を取得する方法(C++)

QNetworkAccessManager、QNetworkRequest、QNetworkReplyを使用して多くの例を確認しましたが、「SSLハンドシェイクに失敗しました」などの情報が返され、イメージをダウンロードできません。画像をダウンロードするには

URLは次のとおりです。

result = urllib.urlopen(url).read() 
    tile = PIL.Image.open(cStringIO.StringIO(result)) 

非常に簡単で便利だった:私は仕事をするためにはPythonを使用

urlbase = "https://maps.googleapis.com/maps/api/staticmap?center=%f,%f&zoom=%d&maptype=%s&size=%dx%d&format=jpg" 

前。

しかし、QTとC++については、多くの自己構築機能が必要なようです。だから、C++とQTで仕事をする簡単な方法はありますか?

+0

私はあなたを伝えることができる最高のがある:それはすべて私のために動作します。イメージをダウンロードする方法とQtバイナリを使用する完全な例を示してください(自己ビルドで完全な 'configure'行を提供する場合)。おそらく、[この回答](http://stackoverflow.com/a/31619378/1329652)を出発点として使用してください:URLを変更するだけでビルドして実行し、 'https:// 'を介してダウンロードすることもできます。 –

+0

答えは私の場合は機能しません。 「SSLハンドシェイクに失敗しました」というエラーメッセージが表示されます。 –

+0

ほとんどのメソッドは "http://"では動作しますが、 "https://"では動作しないようです。したがって、問題は「https://」から来る必要があります。理由を知っていると思う。 –

答えて

0

QML moduleでGUIを実装し、マップにMap QML typeを使用できます。

それは「オフライン」機能のキャッシュをサポートしています。「オンライン」マッププラグイン、ネットワークの帯域幅と遅延のために

は、パフォーマンスのユーザーの認識に大きな 貢献することができます。広範囲の キャッシングはこれを軽減するために実行されますが、このような緩和は常に ではありません。 「オフライン」プラグインの場合、 の地理データを取得して基本的な地図機能をレンダリングする時間は、しばしば が支配的な役割を果たすことができます。一部のオフラインプラグインは、部分的にこれを回避するために、ハードウェア アクセラレーションを使用することがあります。 QMLのマップの

例: enter image description here

+1

これは良い見た目です。それを確認させて。ありがとう。 –

0

Qtネットワーク機能を使用する魅力的な理由はありますか? QGraphicsPixmapItemにPILイメージを貼り付け、それをQGraphicsSceneに入れると、Qtから必要なインタラクティビティを得ることができます。

+0

いいえ、私はプログラムを書くためにQtを使いたいと思います。私の質問は、実際にはGUIから画像を読み込むのではなく、URLからデータを要求することです。以前はPythonを使ってGUI全体を書いていましたが、プログラム全体が大きすぎてクラッシュすることがありました。ですから、私はC++(Qt)を使ってプログラムをより安定させたいと思っています。これが私がQtに変更した理由です。 –

+0

ああ、あなたがPyQtを使うつもりだと思った。 PyQtは、C++のQtに比べてかなり安定しています。 – artoonie

+0

ああ、本当ですか?私はwxPythonを使っていました。あまりにも多くのウィジェットや要素があるとクラッシュします。多分私はPyQtを試すことができます。 –

関連する問題