Qtは3つの省の地域のマップを使用して、包括的なマップを書き込みます

I.はじめに

省や都市エリアのマップは、プロファイルと呼ばれることができ、各県の国境地帯で、市は等高線表示、ちょうどラフなアウトラインになり、マップは、すべての後に、実際には基本的に同じである、ポイントアップ杭ラインも9でない場合は非常に小さな誤差は9点破線に注意を払うを行う、またはショーで見られるように、顧客が明確に説明することが可能に全力を尽くす中国のマップという大画面システムの真ん中の前に、があるかもしれません言葉は後半の最新の地図データは、プロファイルデータを含め、ありますが、それは持っていないかもしれないので、データの前半は完璧ではないだろうに、マシになります。

自身が州のプロファイルを提供されていないechart、対応するプロファイルのjsファイルの省や都市を取得するために描画するために、外部のjsファイルを導入する必要対応をダウンロードするには、特に関連の記事や理解の多くを検索するオンライン行きますJSONデータ省や領域、およびJSの規則に従って意図的echartに使用される唯一のJSファイルが必要JSON JSファイル、JSファイルへのデータの変換に専念した後、すべての州および領域を生成するクラスを作成しましたこれらのJSにファイルをアドレスにダウンロードされ、これらの領域のプロファイルとして、それは私が知って取得していないという意味、あなたはそれは彼が、のように見えるように注意base64でエンコードされていると言う、特にどのような実際のシンボルの混乱でありますそれは仕事のための具体的な研究echart原則源を持っていると推定さ、ライン上での使用の権利です。

ドットプロットまたは背景として等高線との両方の平均中国マップをマップ移行を点滅する前に、マウスは、実際のSVGに、スケーリングすることができるベクトルに類似同様の効果を行うことができ、中国のマップに加えて、実際には、も持つことができます世界の地図残りは他の手段で自分自身を変換すると推定される世界地図は、ゆっくりであったが、その後、外国人の顧客に使用するアプリケーションソフトウェアの多くがなければならないことを理由に立っています。

第二に、機能特性

  1. ドットプロット、移動マップ、地域の地図、ダッシュボードなどに点滅サポートしています。
  2. あなたは、色情報、背景色、文字色、線の色、エリアの色の多様性を示唆し、タイトルを設定することができます。
  3. 都市、値、緯度と経度の組の名前が設定されます。
  4. マップ倍率は、マウスホイールのズームを許可するかどうかを、提供されてもよいです。
  5. 内蔵世界地図、すべてのすべてのオフラインをマップ、国、県への正確な州マップ、エリアマップのマッピングします。
  6. データ自体を更新する場合の地方では、データファイルのjsファイル転送機能、変換を構築し、JSON、およびサポートファイルの変換は、すべてのキーファイルを変換します。
  7. すべての組み込み関数の名前と情報を表示するための方法で取得することができる領域JS JSONファイルまたはファイルから緯度経度情報のセットを得ます。
  8. ブラウザコンポーネントが表示さに依存しているマップ、提供デモ・サポート・webkitの、webengine、ページをロードするための3つの方法。
  9. スケーラビリティが非常に強いです、あなたは罰金echartsコンポーネントの自己Yihuhuhuapiao品種を増やすことができ、高速なハードウェアエフェクトを作ります。
  10. 内蔵ダッシュボードには、アセンブリのデモプレゼンテーションでは、対応するコードが含まれ、インタラクティブな機能を提供します。
  11. フレンドリーで統一され、使いやすい、クラスのインターフェイス機能。
  12. 任意のバージョン、任意のシステム、任意のコンパイラをサポートしていQT。

第三に、経験住所

  1. 経験住所:https://pan.baidu.com/s/1uQsDQO5E5crUBN2J-nPeLQ抽出コード:1jkpファイル名:bin_map.zip
  2. 国内サイト:https://gitee.com/feiyangqingyun
  3. 国際サイト:https://github.com/feiyangqingyun
  4. プロフィール:https://blog.csdn.net/feiyangqingyun
  5. 知っているほとんどのホームページ:https://www.zhihu.com/people/feiyangqingyun/

第四に、レンダリング

第五に、関連するコード

QStringList EchartJs::getInfoFromData(const QByteArray &data)
{
    //取出对应的城市名称和经纬度
    //以下两种方法测试过解析时间,json大概1S,字符串分割大概5S,json方法更快
    QStringList result;
#if (QT_VERSION > QT_VERSION_CHECK(5,0,0))
    //采用qt内置的json方法解析
    QJsonParseError error;
    QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error);
    if (error.error == QJsonParseError::NoError) {
        QJsonObject rootObj = jsonDoc.object();
        //qDebug() << rootObj.keys();

        if (rootObj.contains("features")) {
            QJsonArray features = rootObj.value("features").toArray();
            for (int i = 0; i < features.count(); i++) {
                QJsonValue value = features.at(i);
                QJsonObject subObj = value.toObject();
                if (subObj.contains("properties")) {
                    QJsonObject nodeObj = subObj.value("properties").toObject();
                    QStringList list;
                    QJsonArray array = nodeObj.value("cp").toArray();
                    for (int k = 0; k < array.count(); k++) {
                        list << QString::number(array.at(k).toDouble());
                    }

                    QString name = nodeObj.value("name").toString();
                    QString cp = list.join(",");
                    result << QString("%1|%2").arg(name).arg(cp);
                }
            }
        }
    }
#else
    //采用字符串分割方法解析
    QString temp = data;
    temp = temp.mid(0, temp.length() - 24);
    QString flag = "properties";
    int len = temp.length();
    for (int i = 0; i < len; i++) {
        QString str = temp.mid(i, 10);
        if (str == flag) {
            str = temp.mid(i, 100);
            str = str.mid(13, str.indexOf("},") - 13);
            str = str.replace("}", "");
            //到这步数据已经变成 "cp":[121.490317,31.222771],"name":"黄浦区","childNum":1
            //cp name的顺序可能不一样,所以需要分割字符串重新判断
            QString name, cp;
            QStringList list = str.split(",");
            foreach (QString s, list) {
                if (s.startsWith("\"cp\"")) {
                    cp = s.mid(6, s.length());
                } else if (s.startsWith("\"name\"")) {
                    name = s.mid(8, s.length());
                    name = name.replace("\"", "");
                } else if (s.startsWith("\"childNum\"")) {

                } else {
                    //经纬度会拆分成两部分,一部分在这里 31.222771]
                    cp = QString("%1,%2").arg(cp).arg(s.left(s.length() - 1));
                }
            }

            result << QString("%1|%2").arg(name).arg(cp);
        }
    }
#endif
    return result;
}

おすすめ

転載: www.cnblogs.com/feiyangqingyun/p/12640653.html