I am attempting to make a simple map that will allow users to see a truck's GPS location on top of a tiled map service. I am having difficulty getting the graphic symbol to overlap my tiled service because the spatial systems do not match.

Is there a good example or could someone help me conversion through a geometry service? Is a geometry service even the correct method to use for plotting my graphics?

Here is my code so far.

Xaml:

    <UserControl x:Class="TruckGPS_Test.MainPage"
    	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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    	mc:Ignorable="d"
    	d:DesignHeight="300" d:DesignWidth="400"
    	xmlns:esri="http://schemas.esri.com/arcgis/client/2009"
    			 xmlns:esriSymbols="clr-namespace:ESRI.ArcGIS.Client.Symbols;assembly=ESRI.ArcGIS.Client">
    	<Grid x:Name="LayoutRoot" Background="White">
       
    		
    		<Grid.Resources>
    			 <esri:SimpleMarkerSymbol x:Key="RedMarkerSymbol" Color="Red" Size="12" Style="Circle" />
    			<esri:SimpleMarkerSymbol x:Key="YellowMarkerSymbol" Color="Yellow" Size="25" Style="Circle" />
    			<esriSymbols:PictureMarkerSymbol x:Name="TRUCK" Source="images/bucket-truck-box.png" />
    		</Grid.Resources>
    
    
    		<esri:Map x:Name="MyMap" WrapAround="True" Margin="0,0,-325,-506" MouseMove="MyMap_MouseMove">
    			<!--<esri:ArcGISTiledMapServiceLayer ID="MyLayer"
    				Url="http://gisaprd/ArcGIS/rest/services/BaseMap_ArcReader_Cached/MapServer" />-->
    			<!--<esri:ArcGISTiledMapServiceLayer ID="MyLayer"
    				Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />-->
                <esri:ArcGISTiledMapServiceLayer ID="Aerials" Url="http://gisaprd/ArcGIS/rest/services/AerialCoordinateTest/MapServer" Visible="False"  />
    			<esri:ArcGISDynamicMapServiceLayer Url="http://gisaprd/ArcGIS/rest/services/BaseMapCool__WebViewer/MapServer" />
    
    			<esri:GraphicsLayer ID="TruckGPS" >
    
    				<esri:GraphicsLayer.MapTip>
    					<Grid Background="#FFD65555" >
    						<Border BorderBrush="#FFFF0000" BorderThickness="1" CornerRadius="5" />
    						<StackPanel Orientation="Vertical" >
    							<StackPanel Orientation="Horizontal">
    								<TextBlock Text="{Binding [USER_NAME]}" FontWeight="Bold" Foreground="White"  HorizontalAlignment="Left"/>
    							</StackPanel>
    							<StackPanel Orientation="Horizontal">
    								<TextBlock Text="{Binding [SYSTIME]}" FontWeight="Bold" Foreground="White"  HorizontalAlignment="Left"/>
    							</StackPanel>
    						</StackPanel>
    					</Grid>
    				</esri:GraphicsLayer.MapTip>
    			</esri:GraphicsLayer>
    
    		</esri:Map>
    
    		<Grid MinWidth="300" HorizontalAlignment="Right" Background="White" VerticalAlignment="Top" Margin="0,15,15,0" >
    			<StackPanel Margin="5">
    				<TextBlock x:Name="ScreenCoordsTextBlock" 
    					HorizontalAlignment="Left" VerticalAlignment="Center" Text="Screen Coords: "
    						   TextWrapping="Wrap" />
    				<TextBlock x:Name="MapCoordsTextBlock" 
    					HorizontalAlignment="Left" VerticalAlignment="Center" Text="Map Coords: " 
    						   TextWrapping="Wrap" />
    			</StackPanel>
    		</Grid>
    
    
    	</Grid>
    </UserControl>

C#

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using ESRI.ArcGIS.Client;
    using ESRI.ArcGIS.Client.Geometry;
    using ESRI.ArcGIS.Client.Symbols;
    using System.Runtime.Serialization;
    using ESRI.ArcGIS.Client.Tasks;
    using System.Windows.Threading;
    using ESRI.ArcGIS.Client.Bing;
    
    
    namespace TruckGPS_Test
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
                 //AddMarkerGraphics();
    
                QueryTask queryTaskTruckGPS = new QueryTask("http://gisaprd/ArcGIS/rest/services/TruckGPS/MapServer/8");
                queryTaskTruckGPS.ExecuteCompleted += QueryTask_ExecuteCompletedTruckGPS;
                ESRI.ArcGIS.Client.Tasks.Query queryTruckGPS = new ESRI.ArcGIS.Client.Tasks.Query();
                queryTruckGPS.OutFields.Add("*");
                queryTruckGPS.ReturnGeometry = false;
                queryTruckGPS.Where = "1=1";
                queryTaskTruckGPS.ExecuteAsync(queryTruckGPS, "initial");
    
                //This timer updates the outage feature count after a 30 second wait
                System.Windows.Threading.DispatcherTimer myDispatcherTimer = new System.Windows.Threading.DispatcherTimer();
                myDispatcherTimer.Interval = new TimeSpan(0, 0, 0, 10, 0);
                myDispatcherTimer.Tick += new EventHandler(Each_Tick);
                myDispatcherTimer.Start();
    
            }
            
            public void Each_Tick(object o, EventArgs sender)
            {
                QueryTask queryTaskTruckGPS = new QueryTask("http://gisaprd/ArcGIS/rest/services/TruckGPS/MapServer/8");
                queryTaskTruckGPS.ExecuteCompleted += QueryTask_ExecuteCompletedTruckGPS;
                ESRI.ArcGIS.Client.Tasks.Query queryTruckGPS = new ESRI.ArcGIS.Client.Tasks.Query();
                queryTruckGPS.OutFields.Add("*");
                queryTruckGPS.ReturnGeometry = false;
                queryTruckGPS.Where = "1=1";
                queryTaskTruckGPS.ExecuteAsync(queryTruckGPS, "initial");
    
            }
    
            private void QueryTask_ExecuteCompletedTruckGPS(object sender, ESRI.ArcGIS.Client.Tasks.QueryEventArgs args)
            {
                //If Counter isn't working check the web service, make sure the table is added to the map service
                               
                FeatureSet featureSet = args.FeatureSet;
                GraphicsLayer graphicsLayer = MyMap.Layers["TruckGPS"] as GraphicsLayer;
                graphicsLayer.ClearGraphics();
                if (featureSet != null && featureSet.Features.Count > 0)
                {
    
                    ////Check the system time and subtract the time amount wanted from the last gps systime read for movement or idle truck
                    //System.DateTime dTime = DateTime.Now;
                    //// tSpan is 0 days, 0 hours, 0 minutes, and 0 seconds.
                    //System.TimeSpan tSpan = new System.TimeSpan(0, 1, 0, 0);
                    //System.DateTime result = dTime - tSpan;
                   
                   
                    foreach (ESRI.ArcGIS.Client.Graphic feature in featureSet.Features)
                    {
                                            
                        if ((feature.Attributes["LONGITUDE"] != null) && (feature.Attributes["LATITUDE"] != null) ) 
                            //&& (feature.Attributes["S"])
                        {
    
                            var Machine_Name = feature.Attributes["MACHINE_NAME"].ToString();
                            var User_Name = feature.Attributes["USER_NAME"].ToString();
                            double x = Convert.ToDouble(feature.Attributes["LONGITUDE"]);
                            double y =Convert.ToDouble(feature.Attributes["LATITUDE"]);
    
                            feature.Geometry = new MapPoint(x, y);
                            //if (User_Name == "CU656")
                            //{
                                feature.Symbol = LayoutRoot.Resources["TRUCK"] as ESRI.ArcGIS.Client.Symbols.Symbol;
                                graphicsLayer.Graphics.Add(feature);
                            //}
                            //else
                            //{
                            //    feature.Symbol = LayoutRoot.Resources["RedMarkerSymbol"] as ESRI.ArcGIS.Client.Symbols.Symbol;
                            //    graphicsLayer.Graphics.Add(feature);
                            //}
                        }
                    }
                    { (MyMap.Layers["TruckGPS"] as GraphicsLayer).Refresh(); };
                }
                else
                {
                    graphicsLayer.ClearGraphics();
                    //MessageBox.Show("No features returned from query");
                }
            }
           
        }
    
    }