2011-05-26 36 views
7

Estoy desarrollando una aplicación para una empresa de taxis para mi proyecto de último año. Estoy usando Google latitude para rastrear la ubicación del controlador.Incrustar Google Maps en C#

Puedo recuperar con éxito tanto la latitud como la longitud del controlador (es decir, el teléfono habilitado para gps) dentro de C#.

Ahora quiero mostrar la ubicación exacta en una forma probablemente con un alfiler o una marca apuntando al lat recuperado, punto de cruce lon.

Por favor ayuda. gracias por adelantado.

+0

¿Has intentado algo? Google tiene cantidades copiosas de documentación y muestras ........ – Fosco

Respuesta

10

Aquí está el landing page para la API de Google maps. El que probablemente necesite es Static Maps API (tenga en cuenta que solo puede obtener 25 000 imágenes únicas por cliente por día, no es probable que lo haga, pero es algo de lo que debe tenerse en cuenta). Si quieres un mapa interactivo que tendrá que utilizar un control WebBrowser y utilizar el javascript api


+0

Logré que quería usar este método. Utilicé API de mapa estático. Muchas gracias de nuevo :) –

2

La solución más fácil sería simplemente usar el control WebBrowser, entonces no tiene que incrustar nada.

+0

Este es un gran punto en realidad ... Puede pasar una URL bien formada que incluya la latitud/longitud. Sin embargo, no estoy seguro acerca del marcador. – Fosco

+0

oww sweet :) esto realmente funcionó. Pero aún prefiero usar la aplicación nativa que abrir el navegador. –

+0

Los marcadores están basados ​​en Javascript, por lo que pueden modificarse en el HTML o pueden ser inyectados http://stackoverflow.com/questions/153748/how-to-inject-javascript-in-webbrowser-control –

7

Otra opción es utilizar un control de prefabricados como this one.

+0

Muy bien, nunca he visto esto antes. Me gusta. –

+0

Guau, muy agradable, ¡yo recomendaría ese también! –

+0

Parece que hay una disputa entre ellos y Google (http://greatmaps.codeplex.com/discussions/252531). Tal vez me aferraría a esto hasta que se solucione –

1

Puede usar GDS Google Map WinForms Control que integra un Mapa interactivo de Google en un Control de usuario .Net utilizando Open Google Map JavaScript API. Está escrito en código C# y es muy fácil de usar. Vea este ejemplo:

  1. Cree una aplicación WinForm;
  2. Arrastre y suelte Gds Google Map en el formulario, asígnele el nombre _gdsGoogleMap y establezca su propiedad dock en "Rellenar";
  3. Agregue dos iconos de 32 x 32 taxis a los recursos y luego Taxi32 y TaxiHL32;
  4. Crea tres controladores de eventos para MapInitializedEvent, MapIconMouseMoveEvent y MapIconMouseLeaveEvent;
  5. Código como de seguidores:

utilizando System.Drawing.Imaging;

usando System.IO;

usando System.Windows.Forms;

usando GdsGoogleMap.DisplaySettings;

usando GdsGoogleMap.FeatureLayers;

usando GdsGoogleMap.Features;

usando GdsGoogleMap.GeoData;

usando GdsGoogleMap.MapEvents;

usando IconMap.Properties;

usando Icon = GdsGoogleMap.Features.Icono;

espacio de nombres IconMap

{

public partial class Form1 : Form 

{ 
    private const string TaxiLayer = "Taxi"; 

    private readonly string _taxiIconPath; 

    private readonly string _taxiHlIconPath; 

    private IconLayer _taxiLayer; 

    public Form1() 
    { 
     InitializeComponent(); 

     _taxiIconPath = Path.GetTempPath() + "\\Taxi32.png"; 
     _taxiHlIconPath = Path.GetTempPath() + "\\TaxiHL32.png"; 

     Resources.Taxi32.Save(_taxiIconPath, ImageFormat.Png); 
     Resources.TaxiHL32.Save(_taxiHlIconPath, ImageFormat.Png); 
    } 

    private void GdsGoogleMapMapInitializedEventHandler(object sender, MapInitializedEventArgs e) 
    { 
     _gdsGoogleMap.MapCenter = new LatLng(50.9249106, -114.0325575); 
     _gdsGoogleMap.MapZoom = 12; 

     _taxiLayer = (IconLayer) _gdsGoogleMap.FeatureLayerCollection.Add(TaxiLayer, FeatureOptions.Icon); 

     _taxiLayer.DisplaySettings = new IconDisplaySettings 
            { 
             DisplayImagePath = _taxiIconPath, 
             HighlightImagePath = _taxiHlIconPath, 
            }; 

     _taxiLayer.IconCollection.Add(new Icon(
               50.8793146, 
               -114.0729934, 
               "Taxi at location of\r\n(50.8793146, -114.0729934)" 
              )); 

     _taxiLayer.IconCollection.Add(new Icon(
               50.8774179, 
               -114.035767, 
               "Taxi at location of\r\n(50.8774179, -114.035767)" 
              )); 
    } 

    private void GdsGoogleMapMapIconMouseMoveEventHandler(object sender, MapIconMouseMoveEventArgs e) 
    { 
     _taxiLayer.IconCollection.SetDisplaySettings(e.IconIndex, true); 
    } 

    private void GdsGoogleMapMapIconMouseLeaveEventHandler(object sender, MapIconMouseLeaveEventArgs e) 
    { 
     _taxiLayer.IconCollection.SetDisplaySettings(e.IconIndex); 
    } 
} 

}

compilar y ejecutar el programa, verá Taxi Map

Mueva el cursor sobre un taxi, verá Taxi Map Highlight