Lo primero me presento, soy nuevo en el foro y novato en google earth pero con ganas de aprender y conocer más sobre este mundo.
La pregunta que quería hacer es la siguiente, estoy desarrollando una aplicación en javascript y me gustaría que cuando se superpongan mis puntos, se abra como en google earth una forma de estrella con todos los puntos y su información.
Buenas, estoy haciendo un desarrollo con maps y desde hace un tiempo tengo un error que hace unos meses no tenía. El tema es que obtengo una información de una bbdd y muestro unos marcadores en un mapa. Funciona bien en todos los navegadores excepto en Chrome, al que sí que llegan los marcadores (porque centra el mapa adonde están) pero no los muestra. Además si después hago zoom se bloquea el mapa.
Estoy utilizando Windows 8. La versión de Chrome es la 28.0.1500.63 m.
La carga de la api la hago con <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
No sé que más poneros. Si queréis que ponga el código decírmelo, pero como funciona en todos los demás navegadores creo que no es cuestión del código. Si no de alguna configuración, o algo así.
Hola tengo este codigo que me muestra un mapa y la vista de google street y depende de donde se ponga la marca la vista se actualiza, lo que quiero es saber como obtener 3 cosas, las coordenadas de la marca segun donde este posicionada, y el angulo yaw de la vista de google street actual, esto al presionar un boton, actualmente mi codigo tiene un boton que muestra las coordenadas pero solo del punto central del mapa es decir no de la marca, alguien podria ayudarme??
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example: Street View Data Example</title>
<script type="text/javascript" src="http://maps.google.com/maps?file=api&&v=2&key=AIzaSyAG4joBMX5NjEDqoC0UJn1gNZf323WoCj8"></script>
<script type="text/javascript">
var map;
var myPano;
var panoClient;
var houseMarker;
Buenas serdj, ponme un poco al día de tu metodología:
1.- ¿Entiendo que trabajas con el API de gmaps?, ¿o el de Gearth?.
2.-Suponiendo que es gmaps, imagino que tienes preparada la respuesta del evento 'on click' para que:
2.1.- Capture las coordenadas y entonces por código creas el marker y su infowindow (new google.maps.Marker/InfoWindow), y en el infowindow has metido el código Html.
2.2.- Quieres (¿mediante javascript?) obtener los datos del formulario (supongo de un Input type="Text").
Si es así, creo que tu opción es utilizar el método Getelementbyid, usa este ejemplo.
Gracias _polifemo por tu ayuda, voy a ver los del kml, quizas pueda ayudarnos a entender un poco si pongo el codigo del mapa de la otra pagina, donde sí se incluye el mapmaker:
<script type="text/javascript">//<![CDATA[
var tst44_00exz_0=document.getElementById('googlemap44_00exz_0');
var tstint44_00exz_0;
var map44_00exz_0;
var mySlidemap44_00exz_0;
var overviewmap44_00exz_0;
var overmap44_00exz_0;
var xml244_00exz_0;
var imageovl44_00exz_0;
var directions44_00exz_0;
var proxy = 'http://..../plugins/content/plugin_googlemap2_proxy.php?';function CancelEvent44_00exz_0(event) {
var e = event;
if (typeof e.preventDefault == 'function') e.preventDefault();
if (typeof e.stopPropagation == 'function') e.stopPropagation();
if (window.event) {
window.event.cancelBubble = true; // for IE
window.event.returnValue = false; // for IE
}
}
function checkMap44_00exz_0()
{
if (tst44_00exz_0)
if (tst44_00exz_0.offsetWidth... Leer más ...
Al final lo he conseguido.
Lo primero es que decididamente me he pasado a la versión 3.
Así, para los ficheros klm no hay problema (como había dicho polifemo)
Para los primeros gpx, he conseguido leerlos con XmlHttpRequest (código creo que lo proporciona google). Esto permite leer ficheros xml, así que cuando se guarda el fichero gpx en el servidor hay que cambiarle la extensión a xml (esto ya había que hacerlo con la versión 2 y loadgpx.4.js).
Se parsea el fichero xml (antes gpx) y se añade un polyline al mapa.
Después, he cambido la función que centraba y cogía el zoom de loadgpx.4 para conseguir lo mismo en la versión 3.
Os dejo el fichero con estas funciones(he cambiado la extensión js a txt ya que el foro no me deja poner ficheros js), seguro que se pueden mejorar, pero yo de javascript no domino mucho.
De esta manera se pueden leer cualquier formato de track que siga el estándard xml, cambiando el tag al que utilice cada formato.
Salut y gracias a todos
...problema es que no sé como conseguir las coordenas de la ruta kml para que ya me salga la ruta.
editando el archivo con cualquier editor de texto y buscando la ristra de coordenadas entre las etiquetas <coordinates>...</coordinates> . Leete la estructura del linestring o el elemento que uses en tus archivos (si quieres sube un ejemplo representativo y lo comprobamos).
POSIBLES SOLUCIONES
Supongamos que quieres usar Javascript:
API v2: Una vez (y como pones en tu código) has cargado el objeto GeoXml puedes recurrir a los métodos GetDefaultCenter(), o GetdefaultBounds. Que te devolverán los parámetros que necesites para centrar la vista del mapa.
API v3: No puede ser mas simple. Cargas el kmlLayer y entre los parámetros de... Leer más ...
jlbenito
Copia el siguiente código y guárdalo como html.
Hay dos "polyline" senzillos clickables y cada uno con su ventana informativa.
Espero que te sirva para tu mapa y solucione el problema de cargar el nuevo mapa en la misma ventana del navegador.
<html >
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Clickable Polyline</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=abcdef" type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(37.444, -122.1419), 14);
function createClickablePolyline(polyline,myhtml) {
var line = polyline;
GEvent.addListener(line, "click", function(latlng){ map.openInfoWindowHtml(latlng, myhtml); });
return line;
}
var polyline = new GPolyline([
new GLatLng(37.4419, -122.1419),
new GLatLng(37.4519, -122.1519)
], "#ff0000", 5);
var myhtml = '<h2>Nombre 1</h2><a... Leer más ...
Hola Polifemo
Te ha gustado ¿eh?
Lástima que el manual de la Api de Google Earth sea tan escueto en cuanto a ejemplos de lo que se puede hacer.. seguro que se pueden hacer muchísimas cosas mas. Creo que ya hemos comentado alguna vez sobre lo poco claro y "raro" que resulta ese manual, al menos para mi.
Por cierto, muy interesante también la página con el codigo jquery para redimensionar el div
Bueno, creo que algo he conseguido a base de eliminar el código sobrante de la página que indicabas y dejando solo el efecto de maximizar el contenedor de la imagen
Un saludo y muchas gracias por tu ayuda
Ahí va (quizá le sobre algo, pero así funciona)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Buenas jakuu, como bien dice Google_Master hay problemas de compatibilidades entre gmaps y kml. Consultalo aquí. No obstante, en este caso no creo que sea un problema de la etiqueta <name>.
Veamos, el kml que en verdad carga tu archivo es malaga.kml, no el que has adjuntado. El adjuntado tiene una función en php bloginfo('NODO'). ¿Que hace?, por que lo poco que he leido parece indicar que te devuelve el nombre del blog, no el value de la etiqueta name. Pero bueno, esta comentado y no se ejecuta, ¿verdad?.
Aparte de todo esto, a mí la impresión personal que me da es que mientras Google earth si que interpreta bien la sentencia "This is $[name]". Tu código javascript se limita a carga literalmente el código kml en el mapa (es decir que no interpreta kml, lo plasma literalmente).
Las solicitudes vía URL son un buen método para disponer de googlemaps en tu web sin necesidad de tener conocimientos de programación.
El problema es que al ser un método "simplificado", le faltan funcionalidades (o al menos no he encontrado el modo de conseguir lo que tú pides). No obstante se me ocurren dos modos:
1.- Puedes usar el API de Google Static Maps que convertirá tu mapa en una imagen estática (es decir que pierdes toda la funcionalidad) y que funciona tal que así:
<img src="http://maps.google.com/staticmap?center="TU LATITUD","TU LONGITUD"&zoom="TU ZOOM"&size="TU TAMAÑO"&maptype="ROADMAP/SATELLITE/TERRAIN/HYBRID"\
&key="DEBERAS SOLICITAR UN APIKEY GRATUITO PARA TU DOMINIO"/>
...y no en el programa normal de Google Earth. Pongo un ejemplo básico:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Inclinación de la vista al acercarse al suelo</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="http://www.google.com/jsapi?key=ABQIAAAArCZgeQ8ddm8YbeJQqqHN5BTYrZjdppbykE52CdH9dtH9wJ0VsBQSgm6ZbaTJsaMARyyYkz_JttmHMQ"></script>
<script type="text/javascript">
google.load("earth", "1");
var ge = null;
function init() {
google.earth.createInstance("map3d", initCB, failureCB);
}
function initCB(instance) {
ge = instance;
ge.getWindow().setVisibility(true);
ge.getOptions().setStatusBarVisibility(true);
ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW);
var lookAt = ge.createLookAt('');
lookAt.setLatitude(40.417042);
lookAt.setLongitude(-3.700000);
lookAt.setRange(5000.0);
ge.getView().setAbstractView(lookAt);
Hola Polifemo
Creo que ya lo he resuelto basándome en este post bbs.keyhole.com/ ...d=1#import
En él, el autor facilita un código en PHP que utiliza en un página suya que, por cierto, no funciona dev.bt23.org/keyhole/circlegen/
Solo he tenido que convertirlo a javascript. Creo que está bien y funciona correctamente en cualquier coordenada
Un saludo
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Generar un circulo de radio en km en Google Earth</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="http://www.google.com/jsapi?key=ABQIAAAArCZgeQ8ddm8YbeJQqqHN5BTYrZjdppbykE52CdH9dtH9wJ0VsBQSgm6ZbaTJsaMARyyYkz_JttmHMQ"></script>
<script type="text/javascript">
google.load("earth", "1");
var ge = null;
function init() {
google.earth.createInstance("map3d", initCB, failureCB);
}
... <title>PolyPlot - draw and compute areas of polygons on Google Earth</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="Ployplot, draw and calculate the area of regular polygons on the surface of the globe. Using the Google Earth Plugin" />
<meta name="author" content="James Stafford" />
<script type="text/javascript">
var pi = Math.PI;
function Polygon(lat,lon,lata,lona,sides) {
var me = this;
me.numsides = 120;
me.cent = new PM(lat,lon,'centre','ffff0000');
me.rad = new PM(lata,lona,'outer','ffff0000');
me.setBearDist();
var lineStringPlacemark = ge.createPlacemark('');
me.lineString = ge.createLineString('');
lineStringPlacemark.setGeometry(me.lineString);
me.lineString.setTessellate(true);
me.drawPolygon();
ge.getFeatures().appendChild(lineStringPlacemark);
lineStringPlacemark.setStyleSelector(ge.createStyle(''));
me.lineStyle... Leer más ...
function init() {
google.earth.createInstance("map3d", initCallback, failureCallback);
}
function initCallback(instance) {
ge = instance;
ge.getWindow().setVisibility(true);
ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW);
createMultiGeometry();
}
function failureCallback(errorCode) {
}
//DIBUJAMOS UN CIRCULO QUE DELIMITA LOS 50 KM ALREDEDOR DEL PUNTO
function createMultiGeometry() {
function makeCircle(radius, x, y) {
var center = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);
var ring... Leer más ...
Hola, me gustaria recibir ayuda para insertar un mapa en una web. Tengo un codigo que funciona perfectamente para una instalacion de wordpress pero muestra el plano en forma de mapa. Lo que yo quisiera es que se viera con streetview. Se agradeceria que me ayudasen. El codigo es este:
<?php
// ====== Google Map Single page======
class googlemmap_singlepage extends WP_Widget {
function googlemmap_singlepage() {
//Constructor
$widget_ops = array('classname' => 'widget Google Map in Detail page Sidebar', 'description' => __('Google Map in Detail page Sidebar. It will show you google map V3 for detail page only.') );
$this->WP_Widget('googlemmapwidget_single', __('PT → Google Map V3 - Detail page'), $widget_ops);
}
function widget($args, $instance) {
// prints the widget
extract($args, EXTR_SKIP);
$title = empty($instance['title']) ? '' : apply_filters('widget_title', $instance['title']);
$advt1 = empty($instance['advt1']) ? '' : apply_filters('widget_advt1', $instance['advt1']);
$link1 = empty($instance['link1']) ? '' : apply_filters('widget_link1... Leer más ...
Si aparentemente es como que si no interpretara correctamente el codigo kml. Tu crees que pueda ser un problema la vesion que uso?
Yo estoy trabajando sobre un api de google earth adaptado a un framework de javascript que se llama Extjs (ya que el sitio lo estoy desarrollando con ese framework). Esta es la página de donde lo descargue code.google.com/ ...earth-api/ y aqui ponen un ejemplo thematicmapping.org/ ...ample.html. Si te puedes fijar en el ejemplo si tu seleccionas algunos de los checks box añade o elimina componentes sobre el mapa, pero no realiza ningun acercamiento o enfoque de camara.
Voy a revizar las paginas que me distes y ver que puedo hacer.
La verdad Lomd es que no veo donde puede estar el problema. Otros proyectos han solucionado el problema introduciendo en el código kml las etiquetas de LookAt o camera pero en tu web he cargado archivos con ambos casos y en ninguno de ellos ejecuta la vista. No se si tal vez en el momento de instanciar la ventana de GE, haya que habilitar o deshabilitar alguna opción para poder interpretar esa parte del código. pero es curioso que te cargue todo el contenido del kml (sea este un placemark o un polygon pero no te ejecute la parte de código del LookAt. Prueba a ejecutar este método desde javascript a ver si tienes mas suerte code.google.com/ ...ok_at.html y sobre todo code.google.com/ ...ntrol.html . porque yo reconozco que no alcanzo a ver el problema.
...en este sentido. El siguiente código es el que tengo en otra página.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>GIS de Agua de México S.A. de C.V.</title>
<script src="http://www.google.com/jsapi?key=ABQIAAAAvVdETXRVjvhZiycw4fgOORQLNchPlEBxB9hxIhD1AqzNtzRTFRS6ugXFI9alitYEClFh8UsS5TkbSw">
</script>
<script type="text/javascript">
var ge = null;
google.load("earth", "1");
function init() {
var content = document.getElementById('content');
google.earth.createInstance('content', initCB, failureCB);
}
function initCB(instance) {
ge = instance;
ge.getWindow().setVisibility(true);
// add a navigation control
ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);
// Vuela hasta el DF
var la = ge.createLookAt('');
la.set( 19.320699, -99.152816,
0, // altitude... Leer más ...