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

Apple Calendar.app not showing map if location is a city #236

Closed
Manc opened this issue Apr 7, 2021 · 2 comments
Closed

Apple Calendar.app not showing map if location is a city #236

Manc opened this issue Apr 7, 2021 · 2 comments

Comments

@Manc
Copy link

Manc commented Apr 7, 2021

Hi, I'm using version 1.15.4 and stumbled over an issue using appleLocation() if the location describes a city in general as opposed to a specific address within a city. The Calendar.app on macOS will not display the map, even if coordinates are provided.

I compared what a file generated with iCal looks like in this case in order to suggest a solution. I created a new event in Calendar, started typing "Los Angeles" into the location field and used the auto-complete feature to select the city.

First of all, the object for appleLocation() requires all of those properties: title, address, geo, radius, however, the iCal file produced by Calendar app would not use X-ADDRESS for the X-APPLE-STRUCTURED-LOCATION property of the iCal file, only X-TITLE.

What ical-generator produces (abbreviated):

BEGIN:VEVENT
[...]
LOCATION:Los Angeles\nCalifornia\, United States
X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-ADDRESS=California\, United States
 ;X-APPLE-RADIUS=400;X-TITLE=Los Angeles:geo:34.052;-118.243
GEO:34.052;-118.243
[...]
END:VEVENT

What it should look like (I manually edited the file until it worked):

BEGIN:VEVENT
[...]
LOCATION:Los Angeles\, California\, United States
X-APPLE-STRUCTURED-LOCATION;VALUE=URI;X-APPLE-RADIUS=400;X-TITLE=Los Angel
 es\, California\, United States:geo:34.05223,-118.24368
GEO:34.05223;-118.24368
[...]
END:VEVENT

Note: Since there is no X-ADDRESS attribute, the LOCATION property should use a comma after Los Angeles instead of a line break, i.e. the format of LOCATION should be just <title> instead of <title>\n<address>.

My conclusion is, the address property should be optional. For a city, the method should be used like this:

iCalEvent.appleLocation({
	title: 'Los Angeles, California, United States',
	// address: undefined,
	geo: {
		lon: -118.24368,
		lat: 34.05223,
	},
	radius: 400,
});
@sebbo2002 sebbo2002 self-assigned this Apr 7, 2021
sebbo2002 pushed a commit that referenced this issue Apr 9, 2021
# [2.0.0-develop.18](v2.0.0-develop.17...v2.0.0-develop.18) (2021-04-09)

### Features

* **Event:** Allow `X-APPLE-STRUCTURED-LOCATION` without address ([4e63e29](4e63e29)), closes [#236](#236)
@sebbo2002
Copy link
Owner

🎉 This issue has been resolved in version 2.0.0-develop.18 🎉

The release is available on:

Your semantic-release bot 📦🚀

This was referenced Apr 10, 2021
sebbo2002 pushed a commit that referenced this issue Apr 28, 2021
# [2.0.0](v1.15.4...v2.0.0) (2021-04-28)

### Bug Fixes

* **package.json:** add temporary version ([0bc117e](0bc117e))
* Allow to set null values within object constructors ([8b87183](8b87183))
* **deps:** Also define libs as devDependency for tests ([c04ae32](c04ae32))
* **deps:** Define supported libs as peerDependencies ([84e2784](84e2784))
* Make peer dependencies optional ([b384ac7](b384ac7)), closes [#244](#244)
* **Tools:** Prevent formatDate() from using global timezones prefixed with a slash ([85ab7b2](85ab7b2))
* **deps:** Put necessary typings in peerDependencies as well :/ ([14f0f43](14f0f43))
* **Event:** Remove `moment` dependency in constructor ([8331d4c](8331d4c)), closes [#234](#234)

### Code Refactoring

* **Calendar:** Remove moment.Duration from `ttl()` method ([c6ccd12](c6ccd12))
* Update error URLs ([2aedf55](2aedf55))

### Features

* **Event:** Add `priority()` method ([247039f](247039f)), closes [#163](#163)
* **Attendee:** Add `x()` method for custom attributes ([5d9d686](5d9d686)), closes [#183](#183)
* **Calendar:** add new clear method ([1ebefcb](1ebefcb)), closes [#188](#188)
* Add ReleaseBot ([2fba164](2fba164))
* **Calendar:** Add support for external VTimezone generator ([f4bc8e0](f4bc8e0)), closes [#122](#122)
* **Event:** Allow `X-APPLE-STRUCTURED-LOCATION` without address ([4e63e29](4e63e29)), closes [#236](#236)
* **Event:** Make organizer.email optional ([8450492](8450492)), closes [#137](#137)
* **Event:** Merge `location()`, `appleLocation()` and `geo()` ([62c1516](62c1516)), closes [#187](#187)
* Merge event's `description()` and `htmlDescription()` ([ce537f8](ce537f8))
* Support moment.js, Day.js and Luxon ([#91](#91), BREAKING CHANGE) ([6db24ee](6db24ee))
* **Event:** Support RRule objects and raw strings in `repeating()` ([4436785](4436785)), closes [#190](#190)
* Updated the entire codebase to Typescript ([d013dc0](d013dc0))
* **Events:** Use uuid-random for random UUIDs (close [#215](#215)) ([a4c19cc](a4c19cc))

### BREAKING CHANGES

* Some error messages changed, so if you check for error , please double check them now.
* `htmlDescription()` was removed, use `description()` instead.
* **Calendar:** `ttl()` will now return a number, not a `moment.Duration`. You can still use `moment.Duration` to set the `ttl` value.
* **Event:** `geo()` and `appleLocation()` are not available anymore, use `location()` instead and pass an location object (with title, radius, etc.)
* **Calendar:** Calendar's `clear()` method is a completely new implementation and, unlike previous versions, will not reset metadata such as `name` or `prodId`. Only the events will be removed
@sebbo2002
Copy link
Owner

🎉 This issue has been resolved in version 2.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants