2016-05-04 12 views
0

私は現在、BingマップとLocationApiLibraryを使用してユーザーの場所を取得しようとしていますが、C#で学校プロジェクトとしてこのデスクトッププログラムを使用しています。いくつかの欠落している参照でいくつかの問題があったが、私はそれを整理することができた。今、私はこのエラーが発生しています:場所エラーWindows C#

Error CS1503 Argument 2: cannot convert from 'LocationApiLib.Location' >to 'Microsoft.Maps.MapControl.WPF.Location'

私は、ここでも私の問題を解決できる何かを検索していません。基本的には、クライアントの座標を読み取ってテキストボックスに表示し、それをデータベースの他の情報と一緒に保存したいと考えています。

using LocationApiLib; 
using Microsoft.Maps.MapControl.WPF; 
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 
using System.Windows.Documents; 
using System.Windows.Input; 
using System.Windows.Media; 
using System.Windows.Media.Imaging; 
using System.Windows.Shapes; 
using System.Windows.Threading; 

namespace myBMark_Dekstop_Edition 
{ 
    /// <summary> 
    /// Interaction logic for Window2.xaml 
    /// </summary> 
    public partial class Window2 : Window 
    { 
     private myMap; 

     public Window2() 
     { 
      InitializeComponent(); 
      ImageBrush myBrush = new ImageBrush(); 
      myBrush.ImageSource = 
       new BitmapImage(new Uri("C:/Users/AbdulB.M/Documents/Visual Studio 2015/Projects/myBMark Dekstop Edition/1.PNG", UriKind.Absolute)); 
      this.Background = myBrush; 




     } 

     private void Button_Click(object sender, RoutedEventArgs e) 
     { 
      LocationApiLib.Location myLoc = new LocationApiLib.Location(); 
      myMap.SetView(myLoc, Convert.ToDouble(14), Convert.ToDouble(0)); 

      Pushpin myPin = new Pushpin(); 
      MapLayer.SetPosition(myPin, myLoc); 
      myMap.Children.Add(myPin); 

      System.Windows.Controls.Label label = new System.Windows.Controls.Label(); 
      label.Content = "Here I am!"; 
      label.Foreground = new SolidColorBrush(Colors.DarkBlue); 
      label.Foreground = new SolidColorBrush(Colors.WhiteSmoke); 
      label.FontSize = 30; 
      MapLayer.SetPosition(label, myLoc); 
      myMap.Children.Add(label); 
     } 

     private void Button_Click_1(object sender, RoutedEventArgs e) 
     { 

     } 

     private void Button_Click_2(object sender, RoutedEventArgs e) 
     { 

     } 
    } 
    } 

XAMLの一部はここにある:

<Window x:Class="myBMark_Dekstop_Edition.Window2" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:local="clr-namespace:myBMark_Dekstop_Edition" 
    mc:Ignorable="d" 
    Title="Home" Height="634.695" Width="695.732" WindowStartupLocation="CenterScreen"> 
<Grid> 
    <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="72,160,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 
    <TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="72,207,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 
    <TextBox x:Name="textBox2" HorizontalAlignment="Left" Height="23" Margin="72,271,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 
    <TextBox x:Name="textBox3" HorizontalAlignment="Left" Height="23" Margin="72,320,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 
    <TextBox x:Name="textBox4" HorizontalAlignment="Left" Height="23" Margin="72,377,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 
    <TextBox x:Name="textBox5" HorizontalAlignment="Left" Height="23" Margin="72,117,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/> 

    <m:Map Name="myMap" 
     Center="-1.968404, 30.036240" 
     ZoomLevel="10" 
     CredentialsProvider="..." 
     Mode="Road" Margin="245,29,29.6,347.8" ></m:Map> 

    <StackPanel HorizontalAlignment="Left"/> 
    <StackPanel HorizontalAlignment="Right" VerticalAlignment="Center"> 
     <Button Content="+" Click="Button_Click_1" Width="105" Height="40"/> 
     <Button Content="-" Click="Button_Click_2" Width="105" Height="40"/> 
    </StackPanel> 
    <Button Content="Get my location" Click="Button_Click" Margin="396,275,188.6,302.8"/> 

</Grid> 

+0

私はmyMapのタイプについてはわかりません。しかし、xamlで宣言され、コード内にプライベートmyMapとして記述されていると、エラー "windowsにはすでにmyMapの定義が含まれています"が発生しましたが、その問題を解決しました。それではまだ変換問題に悩まされています。 – abmy

+0

2つのタイプは非常に異なります。したがって、一方を他方に割り当てることはできません。 'LocationApiLib.Location'インスタンスから取得したデータを使用して、' Microsoft.Maps.MapControl.WPF.Location'インスタンスを作成する必要があります。 – Corey

+0

これは、 "private myMap;"ありますか? – abmy

答えて

0

は、私はエラーが(Microsoft.Maps.MapControl.WPF setviewコマンド機能でmyLoc(LocationApiLib.Location)を使用する方法についてであると仮定します。ロケーション)。

SetViewで使用するために、myLocから座標を抽出し、新しいMicrosoft.Maps.MapControl.WPF.Locationを作成してみてください。

EDITED:

このコードはあなたの例ではコンパイル:

Location myLoc = new Location(); 

    myMap.SetView(myLoc, Convert.ToDouble(14), Convert.ToDouble(0)); 

ちょうどsetviewコマンドを呼び出す前にmyLocオブジェクトへの経度と緯度を設定します。確かにあなたはLocationApiLibオブジェクトからその情報を得ることができます。

Location myLoc = new Location(); 
    myLoc.Latitude = value1; 
    myLoc.Longitude = value2; 
    myLoc.Altitude = value3; 
    myMap.SetView(myLoc, Convert.ToDouble(14), Convert.ToDouble(0)); 
+0

私はxamlの部分を投稿しました。 Cantはエラーを見つけたようです。 – abmy

+0

私は学生ですので、私はそれを理解しようとしています。しかし、私は、Microsoft.Maps.MapControl.WPF.Locationインスタンスを宣言しようとしましたが、その名前空間をエラーとし、それを使用することはできません。 – abmy

0

私はあなたのコードを見ているからだと思うあなたの問題は、使用している場所(WPFから名前空間LocationApiLibおよびその他の1)と呼ばれる2つのタイプが互いから派生していないので、キャストすることができないということです。 MapLayer.SetPositionの2番目のパラメータは、LocationApiLib.Location型のオブジェクトを渡すWPF Location型です。

これを解決するための1つのオプションは、WPF Locationオブジェクトを新規に作成し、LocationApiLib Locationオブジェクトから必要なlong/lat値を設定して設定することです。そこLocationApiLib場所からWPF場所を作成するには、いくつかの簡単な方法かもしれませんが、私はこれとエラーなしで

LocationApiLib.Location myLoc = new LocationApiLib.Location(); 

を交換することで、エラーを修正し、自分...

0

ことをGoogleに必要があるだろう、しかし、現時点では、私は間違った場所(アスレチック・オーシャン!)で問題を抱えています。私は別の質問で厳しく尋ねるでしょう。あなたの返信をありがとう。

Microsoft.Maps.MapControl.WPF.Location myLoc = new Microsoft.Maps.MapControl.WPF.Location();