3

エラーは次のとおりです。

Error   1   Cannot implicitly convert type 'Plantool.xRoute.Point' to 'Plantool.xMap.Point' 
Error   2   Cannot implicitly convert type 'Plantool.xRoute.Point' to 'Plantool.xMap.Point' 
Error   3   Cannot implicitly convert type 'Plantool.xRoute.LineString' to 'Plantool.xMap.LineString'

名前空間に付属するこのコードがあります。

using Plantool; //Contains xMap, xServer, xLocate

そして、これが問題の関数です。

    /* createMap()
     * Input: WaypointDesc[], Route
     * Output: string mapURL
     * Edited 21/12/12 - Davide Nguyen
     */
    private static string createMap(xRoute.WaypointDesc[] waypointDesc, xRoute.Route route)
    {
        #region boundingBox
        // Set boundingBox fand use corners from the calculated route
        xMap.BoundingBox boundingBox = new xMap.BoundingBox();
        boundingBox.leftTop = route.totalRectangle.rightTop;
        boundingBox.rightBottom = route.totalRectangle.leftBottom;
        #endregion

        #region mapParams
        // Build mapParams
        xMap.MapParams mapParams = new xMap.MapParams();
        mapParams.showScale = true;
        mapParams.useMiles = false;
        #endregion

        #region imageInfo
        // Create imageInfo and set the frame size and image format. NOTE: 1052; 863
        xMap.ImageInfo imageInfo = new xMap.ImageInfo();
        imageInfo.format = xMap.ImageFileFormat.PNG;
        imageInfo.height = 1052;
        imageInfo.width = 863;
        imageInfo.imageParameter = "";
        #endregion

        #region layers
        // Create a line from the calculated route
        xMap.LineString[] lineStrings = new xMap.LineString[] { route.polygon };
        xMap.Lines[] lines = new xMap.Lines[1];
        xMap.LineOptions options = new xMap.LineOptions();
        xMap.LinePartOptions partoptions = new xMap.LinePartOptions();
        partoptions.color = new xMap.Color();
        partoptions.visible = true;
        partoptions.width = -10;
        options.mainLine = partoptions;

        lines[0] = new xMap.Lines();
        lines[0].wrappedLines = lineStrings;
        lines[0].options = options;

        // Define customLayer that contains the object lines and set layers.
        xMap.CustomLayer customLayer = new xMap.CustomLayer();
        customLayer.visible = true;
        customLayer.drawPriority = 100;
        customLayer.wrappedLines = lines;
        customLayer.objectInfos = xMap.ObjectInfoType.NONE;
        customLayer.centerObjects = true;
        xMap.Layer[] layers = new xMap.Layer[] { customLayer };
        #endregion

        #region includeImageInResponse
        // Set argument includeImageInResponse to false (default).
        Boolean includeImageInResponse = false;
        #endregion

        // Return object map using the following method.
        xMap.Map map = xMapClient.renderMapBoundingBox(boundingBox, mapParams, imageInfo, layers, includeImageInResponse, null);

        // Retrieve the image
        string result = "http://" + map.image.url;

        // Return the drawn map
        return result;
    }

問題はboundingBoxオブジェクトとオブジェクトにありlineStringます。の名前空間と同一の名前空間のオブジェクトroute.totalRectangleが含まれています。とにかくそれをコピーまたは変換することはありますか?PointxRoutexMap

この問題は Java の例では発生しないようですが、C# では発生します。このエラーを解決できれば、他のエラーも解決されると確信しています。APIでお尻を検索しましたが、役立つかもしれません:

まだ自分を掘っています。

4

5 に答える 5

2

C#では、暗黙の変換が存在しない限り、すべてのプロパティなどをコピーせずに、すべての目的が同一であっても、あるタイプから別のタイプに変換することはできません。

したがって、上記のリンクに示されているように暗黙の変換演算子を作成するか、AutoMapperなどのツールを使用して2つのオブジェクト間でコピーすることができます。

于 2012-12-21T09:20:43.127 に答える
0

これを自分の目的で確認してください...ただし、1 つのオプションは、JSON パーサーを使用して 1 つのクラスを JSON にシリアル化し、それを逆シリアル化して別のクラスに戻すことです。短くて簡単な答えですが、探しているのが Contoso.Project.UrMom からプロパティを取得し、Albiet.Project.UrMom に直接転送することだけであれば、うまくいきます。

于 2016-02-18T17:32:32.093 に答える
0

オブジェクトのシリアル化に基づくこの別の代替手段を見つけました。私に関する限り、ディスクにアクセスするという欠点があります。

于 2016-12-27T13:26:05.513 に答える
0

その間、コードと API をランダムに操作しているときに、この問題の別の解決策を見つけました。これは、既知のテキスト値をあるオブジェクトから別のオブジェクトにコピーすることによる 2 つのエラーの部分的な解決策です。できれば、ラインストリング部分についても同じことができます。他の誰かがこれに遭遇し、それが有用な解決策であると判断した場合に備えて、これを投稿しています。以下の新しいコード領域。

        // Set boundingBox fand use corners from the calculated route
        xMap.BoundingBox boundingBox = new xMap.BoundingBox();
        xMap.Point rightTop = new xMap.Point();
        rightTop.wkt = route.totalRectangle.rightTop.wkt;
        xMap.Point leftBottom = new xMap.Point();
        leftBottom.wkt = route.totalRectangle.leftBottom.wkt;
        boundingBox.leftTop = rightTop;
        boundingBox.rightBottom = leftBottom;

編集:折れ線の同じ解決策。

        // Solution: Cannot implicitly conver ttype xRoute.LineString to xMap.LineString
        xMap.LineString maproute = new xMap.LineString();
        maproute.wkt = route.polygon.wkt;

        // Create a line from the calculated route
        xMap.LineString[] lineStrings = new xMap.LineString[] { maproute };

助けてくれてありがとう、誰かがこの解決策も役に立つと思うかもしれません。

于 2012-12-21T10:58:43.197 に答える