Ejemplo n.º 1
0
 private void Mms_ZMX_SeSeleccionoLocalidad(ZMXUC_MapaMenuSeleccion mms, object localidad)
 {
     circles_layer.Children.Remove(mms);
     AgregarPinAMapa(mms.ZMX_Location, localidad);
 }
Ejemplo n.º 2
0
        private void Map_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            // Disables the default mouse double-click action.
            e.Handled = true;


            // Determin the location to place the pushpin at on the map.

            //Get the mouse click coordinates
            Point mousePosition = e.GetPosition(this);
            //Convert the mouse coordinates to a locatoin on the map
            Location pinLocation = map.ViewportPointToLocation(mousePosition);

            object localidadSeleccionada = null;

            if (ZMX_ModoBuscarLocalidadPorCoordenada)
            {
                if (ZMX_BuscarLocalidadesPorAproximacion != null)
                {
                    //se solicita a la pantalla las localidades cercanas consultando su servicio
                    List <object> localidadesEncontradasCercanas = ZMX_BuscarLocalidadesPorAproximacion(this, pinLocation.Latitude, pinLocation.Longitude);
                    //de las localidades consultadas, se verifica cuales son tocadas por el pin
                    List <object> localidadesTocadas = ObtenerCoordenadasTocadasPorPin(localidadesEncontradasCercanas, pinLocation);

                    //diccionario para localidades
                    Dictionary <String, String> datosParaCirculo = new Dictionary <string, string>();

                    //aqui dibujamos las localidades cercanas al punto
                    foreach (object localidad in localidadesEncontradasCercanas)
                    {
                        //obteniendo las coordenadas de la localidad
                        PropertyInfo piCoordenadas = localidad.GetType().GetProperty(ZMX_PropiedadCoordenadas, BindingFlags.Instance | BindingFlags.Public);
                        String       coordenadas   = piCoordenadas.GetValue(localidad).ToString();
                        //obteniendo el nombre de la localidad
                        PropertyInfo piLocalidadNombre = localidad.GetType().GetProperty(ZMX_PropiedadLocalidadNombre, BindingFlags.Instance | BindingFlags.Public);
                        String       nombreLocalidad   = piLocalidadNombre.GetValue(localidad).ToString();
                        //se agrega la coordenada central de la localidad
                        datosParaCirculo.Add(coordenadas, nombreLocalidad);

                        //DibujarCirculo(radioCirculoFactor, ConvertCoordenadasStringToLocation(coordenadas));
                    }
                    // se hace el dibujado
                    ZMX_DibujarLocalidadCirculoDiccionario(datosParaCirculo);

                    //si se estan tocando localidades, se muestra un menu contextual para seleccionar la deseada
                    //si se estan interceptando localidades, se muestra un menu contextual para seleccion
                    if (localidadesTocadas.Count > 1)
                    {
                        //aqui mostrar el menu contextual
                        //String mensaje = "Elegir:\r\n";
                        //foreach(object localidadTocada in localidadesTocadas)
                        //{
                        //    PropertyInfo piLocalidadNombre = localidadTocada.GetType().GetProperty(ZMX_PropiedadLocalidadNombre, BindingFlags.Instance | BindingFlags.Public);
                        //    String nombreLocalidad = piLocalidadNombre.GetValue(localidadTocada).ToString();
                        //    mensaje += "-" + nombreLocalidad + "\r\n";
                        //}
                        //MessageBox.Show(mensaje);


                        ZMXUC_MapaMenuSeleccion mms = new ZMXUC_MapaMenuSeleccion();
                        mms.ZMX_Location = pinLocation;
                        mms.ZMX_SeSeleccionoLocalidad += Mms_ZMX_SeSeleccionoLocalidad;

                        foreach (object localidadTocada in localidadesTocadas)
                        {
                            PropertyInfo piLocalidadNombre = localidadTocada.GetType().GetProperty(ZMX_PropiedadLocalidadNombre, BindingFlags.Instance | BindingFlags.Public);
                            String       nombreLocalidad   = piLocalidadNombre.GetValue(localidadTocada).ToString();
                            //mensaje += "-" + nombreLocalidad + "\r\n";
                            mms.ZMX_AgregarLocalidad(localidadTocada, nombreLocalidad);
                        }

                        circles_layer.AddChild(mms, pinLocation);


                        return;
                    }
                    if (localidadesTocadas.Count == 1)
                    {
                        //si solo es una localidad, tomar esta como la localidad elegida y continuar colocando el pin
                        localidadSeleccionada = localidadesTocadas[0];
                    }
                    //si no encontro localidades donde se dió doble click, cancelar el pin.
                    if (localidadesTocadas.Count == 0)
                    {
                        MessageBox.Show("Favor de colocar el pin en una localidad válida (circulos en el mapa)");
                        return;
                    }
                }
            }
            if (panel_esPorBusquedaPanel)
            {
                AgregarPinMapaPorBusqueda(pinLocation, localidadSeleccionada);
            }
            else
            {
                AgregarPinAMapa(pinLocation, localidadSeleccionada);
            }
        }