2017-05-29 11 views
0

Ich habe eine App mit einer integrierten Karte mit der Google Maps v3 API. In der Karte zeige ich einige Markierungen mit einem Infowiew mit dem Namen des Klienten, seiner Adresse und einem Link, um die Route festzulegen.Links auf Karten, nicht funktionieren

Der einmal angeklickte Link sollte zur nativen Anwendung von Google Maps gehen, aber er reagiert nicht. Das gleiche passiert mit anderen Links der Marken von Google, wie Tankstellen, Unternehmen usw. ...

Ich füge die Methode, die die Karte lädt, die Lesezeichen, die Infofenster und die, die die native Anwendung öffnen soll Google Maps.

< --Edit ---> Die Kern-App it's html, css, javascript und jquery. Es ist nicht Android oder iOS nativ.

Funktion initMap() {

// Origin, could be latlng or ZipCode 
    var pointOrigin = new google.maps.LatLng(itemsPosition[0].latitud, itemsPosition[0].longitud); 

    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 15, 
     // Map 
     center: pointOrigin 
    }); 

    var infowindow = new google.maps.InfoWindow(); 

    marker = new google.maps.Marker({ 
     position: new google.maps.LatLng(itemsPosition[0].latitud, itemsPosition[0].longitud), 
     icon: "http://labs.google.com/ridefinder/images/mm_20_blue.png", 
     map: map 
    }); 

    var marker, i; 
    for (i = 0; i < items.length; i++) { 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(items[i].latitud, items[i].longitud), 
      icon: "http://labs.google.com/ridefinder/images/mm_20_red.png", 
      animation: google.maps.Animation.BOUNCE, 
      map: map 
     }); 

     google.maps.event.addListener(marker, 'click', (function(marker, i) { 
      return function() { 
       marker.setAnimation(null); 

       infowindow.setContent("<div id='content'><h4>" + items[i].name + "</h4>" + items[i].dir + "<a id='ruta' href='" + showMap(items[i].latitud + "," + items[i].longitud) + "'>Ver Ruta</a></div>"); 

       infowindow.open(map, marker); 
      } 
     })(marker, i)); 
    } 

    // open navigator or native Maps App 
    function openMaps(latitud, longitud) { 
     window.open(showMap(latitud + "," + longitud), '_system'); 
    } 

    // url changes according to device 
    showMap = function(q) { 
     var device = navigator.userAgent; 
     var q = q.replace(/\s/g, "+"); 

     var url = "http://maps.google.com?saddr=" + itemsPosition[0].latitud + ',' + itemsPosition[0].longitud + "&daddr=" + q; 

     if (device.match(/Iphone/i) || device.match(/iPhone|iPad|iPod/i)) { 
      url = 'http://maps.apple.com/maps?saddr=Current%20Location&daddr=' + q 
     } else if (device.match(/Android/i)) { 
      url = "geo:0,0?q=" + q; 
     } else if (device.match(/Windows Phone/i)) { 
      url = "maps:" + q; 
     } 

     return url; 
    } 

Antwort

1

bei android: -

Sie sollten eine Intent-Objekt mit einer geo-URI erstellen:

String uri = String.format(Locale.ENGLISH, "geo:%f,%f", latitude, longitude); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); context.startActivity(intent);

+0

ist ein Hybrid App, also, es ist für iOS, Windows und Android. Der Kern ist HTML, CSS und Javascript mit jquery. –

Verwandte Themen