मैं एक आयनिक/संधारित्र अनुप्रयोग में मानचित्रों को एकीकृत करने के लिए कोणीय सामग्री Google मानचित्र घटक का उपयोग कर रहा हूं।
https://github.com/angular/components/tree/master/src/google-maps
जब मैं एप्लिकेशन विकसित कर रहा हूं तो मानचित्र कार्यक्षमता पूरी तरह से ठीक काम करती है। जब मैं Google मानचित्र को लागू करने वाले घटक के लिए परीक्षण फ़ाइल चलाने का प्रयास करता हूं, तो मुझे यह त्रुटि मिलती है:
Failed: Namespace google not found, cannot construct embedded google map. Please install the Google Maps JavaScript API: https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API
Error: Namespace google not found, cannot construct embedded google map. Please install the Google Maps JavaScript API: https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API
at new GoogleMap (http://localhost:9876/_karma_webpack_/node_modules/@angular/google-maps/__ivy_ngcc__/fesm2015/google-maps.js:202:1)
at NodeInjectorFactory.GoogleMap_Factory [as factory] (http://localhost:9876/_karma_webpack_/node_modules/@angular/google-maps/__ivy_ngcc__/fesm2015/google-maps.js:441:49)
at getNodeInjectable (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:4029:1)
at instantiateAllDirectives (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:7964:1)
at createDirectivesInstances (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:7330:1)
at ɵɵelementStart (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:13902:1)
at HomePage_Template (ng:///HomePage.js:79:9)
at executeTemplate (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:7303:1)
at renderView (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:7112:1)
at renderComponent (http://localhost:9876/_karma_webpack_/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:8373:1)
Karma.conf.js (यह एक आखिरी खाई का प्रयास था, कोई भाग्य नहीं।):
config.set({
...
plugins: [
...
require('@angular/google-maps')
],
...
});
एचटीएमएल:
<google-map>
<map-rectangle
*ngIf="showSelectionUI"
[bounds]="bounds"
[options]="options"
></map-rectangle>
<map-marker
#marker="mapMarker"
*ngFor="let position of markerPositions"
[position]="position"
></map-marker>
</google-map>
टाइपप्रति:
@ViewChild(GoogleMap) map: GoogleMap;
@ViewChild(MapRectangle) rectangle: MapRectangle;
और यहाँ पूरी कल्पना फ़ाइल है:
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { IonicModule } from '@ionic/angular';
import { HomePage } from './home.page';
import { Storage } from '@ionic/storage';
import {
HttpClientTestingModule,
HttpTestingController
} from '@angular/common/http/testing';
import { GoogleMapsModule, GoogleMap } from '@angular/google-maps';
import { GooglePlaceModule } from 'ngx-google-places-autocomplete';
describe('HomePage', () => {
let component: HomePage;
let fixture: ComponentFixture<HomePage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [HomePage],
imports: [
IonicModule.forRoot(),
HttpClientTestingModule,
GoogleMapsModule,
GooglePlaceModule
],
providers: [
{
provide: Storage,
useValue: {
get: () => 'manual'
}
}
]
}).compileComponents();
fixture = TestBed.createComponent(HomePage);
component = fixture.componentInstance;
fixture.detectChanges();
}));
it('should create', () => {
expect(component).toBeTruthy();
});
});
3 जवाब
अपनी लाइब्रेरी विकसित करते समय मैं उसी समस्या में भाग गया। समाधान Google से जावास्क्रिप्ट एपीआई फ़ाइल डाउनलोड करना था, इसे कार्यक्षेत्र में सहेजना था, फिर परीक्षण चलाने से पहले कर्म को लोड करने के लिए कॉन्फ़िगर करना था।
मेरे karma.conf
फ़ाइल.
और ये रहा google-maps-api.js
फ़ाइल
ध्यान दें कि इसका मतलब है कि यदि Google कोई भी ब्रेकिंग परिवर्तन जारी करता है तो आपको फ़ाइल को मैन्युअल रूप से फिर से डाउनलोड करना और बदलना पड़ सकता है। शायद कोई बड़ी बात नहीं है। सिर्फ मन में रखने वाली कुछ बातें।
🎁 दूसरी ओर ध्यान दें, मेरी लाइब्रेरी
@bespunky/angular-google-maps
पर एक नज़र डालें। इसके द्वारा प्रदान की जाने वाली शानदार सुविधाओं के अलावा, इसमें एक परीक्षण सूट भी है।
चीयर्स
Angular Google Mapsका उपयोग करके मैं आपको कम से कम यह दिखा सकता हूं कि मैं यह कैसे करता हूं। ए>। मेरे पास एक संग्रहीत भंडार और वेबसाइट है जिस पर मार्कर के साथ Google मानचित्र का उपयोग किया जाता है यहां।
app.module.ts
import { AgmCoreModule } from '@agm/core';
घटक का HTML टेम्प्लेट
<agm-map [latitude]="lat" [zoom]="zoom" [longitude]="lng" [mapTypeId]="'hybrid'" style="height: 600px;">
<agm-marker [latitude]="lat" [longitude]="lng" ></agm-marker>
</agm-map>
घटक का टाइपप्रति टेम्पलेट
lat: number = 41.6600203;
lng: number = -88.7526228;
zoom: number = 15;
मेरे पास भी इसी तरह की समस्या थी और कई दिनों तक इस पर अटके रहने के बाद, मैंने फैसला किया कि मेरे यूनिट टेस्ट को मैप कंपोनेंट की परवाह नहीं करनी चाहिए, इसलिए मैंने एनजी-मॉक्स का उपयोग करके GoogleMap, MapInfoWinfo और MapMarker का मजाक उड़ाया।
एक तरह से, इसने मेरे लिए इसे हल कर दिया।
संबंधित सवाल
नए सवाल
angular
Google से वेब फ्रेमवर्क के बारे में प्रश्न इस टैग का उपयोग कोणीय प्रश्नों के लिए करें जो एक व्यक्तिगत संस्करण के लिए विशिष्ट नहीं हैं। पुराने AngularJS (1.x) वेब ढांचे के लिए, कोणीयज टैग का उपयोग करें।