Google не работает с Ioni c 4 на устройстве - PullRequest
2 голосов
/ 23 января 2020

Я пытался использовать **Google Places API** in my ioni c 4 app to show nearby hospitals. It works when I run it on a browser, I get the results. But it does not work when I test it from my android` телефон.

Я где-то читал, что Google не позволяет вам использовать места остальные API непосредственно из приложения (из-за проблемы CORS) оно должно вызываться внутренним сервером. Это правда? Можно ли как-нибудь использовать API мест из моего приложения.
Ссылка: https://forum.ionicframework.com/t/ionic-4-google-places-api-not-working-on-debug-android-app/180301

Вот мой код:

index. html

<head>
<script src="http://maps.google.com/maps/api/js?key=AIzaXXXXXXXXXXXXXX&libraries=places"></script>
</head>

app.module.ts

import { Geolocation } from '@ionic-native/geolocation/ngx';

providers: [
    Geolocation,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ]

component.ts

import { Geolocation ,GeolocationOptions ,Geoposition ,PositionError } from '@ionic-native/geolocation/ngx'; 

declare var google;

ionViewDidEnter() { this.getUserPosition(); }

getUserPosition(){
    this.options = { enableHighAccuracy : true};
    this.geolocation.getCurrentPosition(this.options).then((pos : Geoposition) => {
        this.currentPos = pos;      
        var request = {
          location: new google.maps.LatLng(pos.coords.latitude,pos.coords.longitude),
          radius: '4000',
          types: ['hospital']
      };
      var container = document.getElementById('results');
      var service = new google.maps.places.PlacesService(container);
      service.nearbySearch(request, (results, status) => {
        if (status == google.maps.places.PlacesServiceStatus.OK) {
            results.forEach(ele => {
              var hospObj = {};
              hospObj['name'] = ele.name;
              hospObj['vicinity'] = ele.vicinity;
              this.places.push(hospObj);
            });
        }
      });
    },(err : PositionError)=>{
      this.err = err.message;
        console.log("error : " + err.message);
    });
  }

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

На самом деле есть тип карт Google, которые вы можете использовать с ioni c Но для геолокации от native ioni c требуется ключ android из облачной платформы Google в конфигурации. xml file

<widget ...>
  <preference name="GOOGLE_MAPS_ANDROID_API_KEY" value="(api key)" />
  <preference name="GOOGLE_MAPS_IOS_API_KEY" value="(api key)" />
</widget>
0 голосов
/ 01 февраля 2020

Проблема в том, что вы, скорее всего, используете веб-аутентификацию (заблокированную по IP или имени хоста), в то время как вам потребуется Android аутентификация приложения (привязанная к имени пакета и отпечатку подписи). Чтобы это работало без использования веб-сервера, вам понадобится простой плагин Cordova, который выполняет эти вызовы (и действует как своего рода локальный «сервер» для вашего приложения JavaScript). См. Places SDK .

Использование неограниченного ключа не рекомендуется, это похоже на забвение вашей кредитной карты.

Прежде чем вы сможете начать пользоваться Google Maps API и SDK для платформ необходимо зарегистрировать и создать платежную учетную запись.

...