entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Hola buenos días.
Estoy trabajando en unity (C#) enviando unas coordenada (latitud, Longitud) de un gps realizado en unity, y los recivo mediante la url en un php web page con $_GET despues los mando a la script que contiene el codigo de la api de google maps donde dibuja el mapa con unos radios que yo determine y unos markers donde la ubicación de uno de ellos la determino en base a las coordenadas previamente obtenida, una vez hecho esto hace un calculo para saber si esta dentro de uno de los radios y manda un alert con la ubicación ejemplo: "CDMX".
Uno de mis problemas es que yo quiero recuperar esa variable que yo he llamado "BUILD" y pasarla al php pero esto no me ha funcionado he probado con window.location, ajax y me funcionan pero obviamente esto lo manda a otro php lo cual no me sirve ya que lo necesito obtener en el mism php he intentad con:

<script>
var a= "SWQART!!";
<?PHP 
$content ="<script> document.write(a) </script>";
?>
</script>
<?php
//$content ="<script> document.write(a) </script>";
echo $content;
?>

Lo cual funciona fuera del script de la api de google maps por alguna razon que desconozco.
Otra cuestion es que estoy tratando de hacer que funcione la api de maps sin las etiquetas de html y unicamente contener los scripts y el codigo de php donde cahco y muestre en un echo mi variable BUILD que esta en JavaScript sin dibujar o mostrar el mapa mi codigo con HTML funciona, me manda los alert y todo perfectamente pero la situación es que una vez que yo mande las coordenadas de unity quiero que me regrese el valor de donde esta osea mi variable BUILD y la muestre desde mi apppero he detectado en que si yo desde unity pido algo así en un php web page no me trae lo que quiero pero si traigo mis datos desde un php file lo hace sin ningún problema, les mando mi código.
-----------------------------------------------------JAVASCRIPT, PHP-----------------------------------------------

<script src="jquery-2.1.0.min.js" type="text/javascript"></script>
<?php
    $lat=$_GET['lat'];
    $lon=$_GET['lon'];
?>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&sensor=true_or_false">  </script>

<script>
function initMap() { 
//    alert("HOLA");
var la= parseFloat('<?php echo $lat;?>');
var lo= parseFloat('<?php echo $lon;?>');
//    alert(la);
//    alert(lo);
    var citymap = {
  tecnoparque:{
    center:{lat: 19.504247, lng: -99.178332},
    population: 5
  },
  buildD:{
      center:{lat: 19.504627, lng: -99.177847},
      population: .4
  },
  buildE:{
      center:{lat: 19.503530, lng: -99.177258},
      population: .4
  }
};    
  // Create the map.
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 14,
    center: {lat: 19.500209, lng: -99.182022},
    mapTypeId: google.maps.MapTypeId.TERRAIN
  });
  // Construct the circle for each value in citymap.
  // Note: We scale the area of the circle based on the population.
  for (var city in citymap) {
    // Add the circle for this city to the map.
    var cityCircle = new google.maps.Circle({
      strokeColor: '#FF0000',
      strokeOpacity: 0.8,
      strokeWeight: 2,
      fillColor: '#FF0000',
      fillOpacity: 0.35,
      map: map,
      center: citymap[city].center,
      radius: Math.sqrt(citymap[city].population) * 100
    });
  }
  // The following example creates a marker in Stockholm, Sweden using a DROP
// animation. Clicking on the marker will toggle the animation between a BOUNCE
// animation and no animation.

var marker;
  marker1 = new google.maps.Marker({
    map: map,
    draggable: true,
    animation: google.maps.Animation.DROP,
    position: {lat: 19.504627, lng: -99.177847}
  });
    marker2 = new google.maps.Marker({
    map: map,
    draggable: true,
    animation: google.maps.Animation.DROP,
    position: {lat: 19.503530, lng: -99.177258}
  });  
  marker3 = new google.maps.Marker({
    map: map,
    draggable: true,
    animation: google.maps.Animation.DROP,
    position: {lat: la , lng: lo }
    });
    /*Centro tecno:*/
    var lat2=19.504247;
    var lon2=-99.178332;
    /*Cento buldD*/
    var lat3=19.504627;
    var lon3=-99.177847;
    /*Cento buldE*/
    var lat4=19.503530;
    var lon4=-99.177258;

    var buidld='edificio D';
    var buildE='edificio E';
    var BUILD;

    var x1=new google.maps.LatLng(la,lo);
    /*tecno*/
    var x2=new google.maps.LatLng(lat2,lon2);
     var distancia = google.maps.geometry.spherical.computeDistanceBetween(x1, x2);
//     alert(distancia);
    /*buldE*/
    var x3=new google.maps.LatLng(lat3,lon3);
    var distanciaD = google.maps.geometry.spherical.computeDistanceBetween(x1, x3);
//    alert(distanciaD);
    /*buldD*/
    var x4=new google.maps.LatLng(lat4,lon4);
    var distanciaE = google.maps.geometry.spherical.computeDistanceBetween(x1, x4);
//    alert(distanciaE);

    var limiteTecno= 222;
    var limiteD=68;
    var limiteE=68;
    if(limiteTecno>distancia){
        if(limiteD>distanciaD){
            BUILD=buidld;    
            alert(BUILD);
//            alert(buidld);
        }
        else if(limiteE>distanciaE){ 
            BUILD=buildE;
            alert(BUILD);
            alert (buildE);
        }
//      alert('tecno');
    }                   
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyA4P4R_LXj4a2MwoUQanBL1CgEPbJt2uTQ&signed&libraries=geometry,places_in=true&callback=initMap"></script>
<?php
echo $lat ;
echo $lon ;
?>

Espero ser claro en mis situaciones, no se si sea posible utilizar así la API de maps pero creo yo qque deberia de funcionar, todos los ejemplos que he visto estan con HTML.
¡Saludos!

2votos

carlossevi comentado

Si tienes dos preguntas diferenciadas, haz dos preguntas, será más fácil que alguien la conteste y la conversación que se generará con las respuestas y comentarios será más manejable.

¿A qué te refieres exactamente con "sin HTML"? Me está pareciendo que desde C# estás lanzando una petición HTTP GET a tu servidor que ejecuta el script PHP, ¿correcto? ¿Qué es lo que quieres que devuelva la petición? Un documento HTML, una imagen, datos serializados... esa parte no termino de entenderla.

1voto

alanSG12 comentado

Sin HTML me refiero a que no tiene nada de <html> <head> </head> <body> </body> </html> etc.
lo que yo quiero que envie mis coordenadas y me devuelava mi variable BUILD al PHP e imprimirlo en un echo para que unity lo traiga de vuelta.

1 Respuesta

2votos

carlossevi Puntos63520

Creo que te estás equivocando de API de Google Maps. Has tomado los ejemplos y funciones de la API para Javascript, y pretendes dar una vuelta imposible:

  • Programa en C# hace petición HTTP GET a script PHP.
  • El script PHP genera un documento HTML con Javascript que es devuelto a la petición anterior. Este es el primer error, tu aplicación no necesita ese documento ni lo va a saber procesar.
  • Suponiendo que algún navegador procese el documento anterior, cosa que no sucederá, quieres que se ejecute el Javascript y le devuelva datos calculados al mismo script PHP. Otro error, no puedes devolverle datos al mismo script que por definición ya ha terminado. Debería devolver datos al servidor mediante una nueva petición.
  • Suponiendo que se llega hasta ese punto, ¿cómo le devuelves datos a la petición de tu programa C#? La ejecución de PHP que respondía a la petición ya ha terminado hace rato.

La API de Javascript está pensada para ser ejecutada desde Javascript, y el Javascript está pensado principalmente para ser ejecutado en un cliente del tipo navegador web (sin entrar en sistemas como Node.js que complicarían la explicación).

Lo que tienes que hacer es utilizar la API de Google Maps desde el script que se ejecuta en tu servidor en PHP, y devolver el dato que necesites como respuesta a la primera petición HTTP GET que hace tu aplicación en C#.

En la página de referencia de Google Maps para desarrolladores puedes encontrar todas las API, incluyendo una API para Web Services.

Un ejemplo de como se consulta la distancia entre dos puntos con esa API: https://developers.google.com/maps/documentation/distance-matrix/?hl=es

1voto

alanSG12 comentado

Ok muchas gracias intentare con esas opciones para ver si puedo resolver el problema
¡Saludos!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta