Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VisibleRegion.toUrlValue() return error #376

Open
2 of 6 tasks
BentakApps opened this issue Aug 4, 2022 · 0 comments
Open
2 of 6 tasks

VisibleRegion.toUrlValue() return error #376

BentakApps opened this issue Aug 4, 2022 · 0 comments

Comments

@BentakApps
Copy link

BentakApps commented Aug 4, 2022

I'm submitting a ... (check one with "x")

  • question
  • any problem or bug report
  • feature request

If you choose 'problem or bug report', please select OS: (check one with "x")

  • Android
  • iOS
  • Browser

cordova information: (run $> cordova plugin list)

cordova-plugin-device 2.0.2 "Device"
cordova-plugin-googlemaps 2.7.1 "cordova-plugin-googlemaps"
cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 5.0.0 "cordova-plugin-ionic-webview"
cordova-plugin-splashscreen 6.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"

If you use @ionic-native/google-maps, please tell the package.json (only @ionic-native/core and @ionic-native/google-maps are fine mostly)

"@ionic-native/core": "^5.36.0",
"@ionic-native/google-maps": "^5.5.0",

Current behavior:

This code:

    const map = GoogleMaps.create('map-canvas', {
      mapType: GoogleMapsMapTypeId.ROADMAP,
      camera: {
        target: {
          lat: -15.800739,
          lng: -47.861314
        },
        zoom: 15
      }
    });
    map.on(GoogleMapsEvent.MAP_READY).subscribe(()=>{
      console.log(map.getVisibleRegion().toUrlValue());
    });

produces this error:

ERROR TypeError: this.southwest.toUrlValue is not a function
    at LatLngBounds.toUrlValue (LatLngBounds.js:36:31)
    at SafeSubscriber._next (map.service.ts:131:42)

Expected behavior:
Expected to get "[lat_sw,lng_sw,lat_ne,lng_ne]" on the terminal

Inspecting where the code fails:

 LatLngBounds.prototype.toUrlValue = function (precision) {
  precision = precision || 6;
  return '[' + this.southwest.toUrlValue(precision) + ',' + this.northeast.toUrlValue(precision) + ']';
};

It seems that the function expects that this.southwest and this.northeast are of type LatLng which implements toUrlValue().

Howerver, VisibleRegion class defines both as ILatLng which does not implement toUrlValue().

Workaround: convert VisibleRegion.southwest and VisibleRegion.northeast to LatLng

    const map = GoogleMaps.create('map-canvas', {
      mapType: GoogleMapsMapTypeId.ROADMAP,
      camera: {
        target: {
          lat: -15.800739,
          lng: -47.861314
        },
        zoom: 15
      }
    });
    map.on(GoogleMapsEvent.MAP_READY).subscribe(()=>{
      const visibleRegion = map.getVisibleRegion();
      //CONVERT SOUTHWEST AND NORTHEAST TO LATLNG
      const southwest = visibleRegion.southwest;
      const northeast = visibleRegion.northeast;
      visibleRegion.southwest = new LatLng(southwest.lat,southwest.lng);
      visibleRegion.northeast = new LatLng(northeast.lat,northeast.lng);
      console.log(visibleRegion.toUrlValue());
    });

Result:

[-15.812301,-47.869897,-15.789176,-47.852731]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant