Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Prepping for a Fabric certification exam? Join us for a live prep session with exam experts to learn how to pass the exam. Register now.

Reply
Blaenzo
Advocate II
Advocate II

Filter report based on Google Maps marker click event

I have Google Maps fully working in a custom visual except for the filtering of the rest of the report when I select a marker in the map.

 

My question is; how can I store the

identity: powerbi.visuals.ISelectionId

in the marker properties such that I can use 

this.selectionManager.select(marker.identity, true)

to filter the report on e.g. a click event on the map?

 

I currently have:

var markers = this.viewModel.dataPoints.map(function (dp, i) {
	return new google.maps.Marker({
		position: new google.maps.LatLng(
			dp.lat,
			dp.lng
		),
		title: dp.category,
		zIndex: i
	})
})

Thanks for any help or suggestions!

Martijn

 

1 ACCEPTED SOLUTION
Blaenzo
Advocate II
Advocate II

I solved it the easy way by creating the click event on creation of the marker:

 

var markers = this.viewModel.dataPoints.map(function (dp, i) {

	var marker = new google.maps.Marker({
		position: new google.maps.LatLng(
			dp.lat,
			dp.lng
		),
		title: dp.category,
		zIndex: i
	})

	google.maps.event.addListener(marker, 'click', (function (marker) {
		return function () {
			thisRef.selectionManager.select(dp.identity)
		}
	})(marker));

	return marker;
})
 

View solution in original post

2 REPLIES 2
Blaenzo
Advocate II
Advocate II

I solved it the easy way by creating the click event on creation of the marker:

 

var markers = this.viewModel.dataPoints.map(function (dp, i) {

	var marker = new google.maps.Marker({
		position: new google.maps.LatLng(
			dp.lat,
			dp.lng
		),
		title: dp.category,
		zIndex: i
	})

	google.maps.event.addListener(marker, 'click', (function (marker) {
		return function () {
			thisRef.selectionManager.select(dp.identity)
		}
	})(marker));

	return marker;
})
 

I noticed that it is possible to add custom properties to a Marker, but that typescript forces you to use .set and .get.
Updated code:

var markers = this.viewModel.dataPoints.map(function (dp, i) {

	var marker = new google.maps.Marker({
		position: new google.maps.LatLng(
			dp.lat,
			dp.lng
		),
		title: dp.category,
		zIndex: i
	});

	marker.set('identity',dp.identity);

	google.maps.event.addListener(marker, 'click', (function (marker) {
		return function () {
			thisRef.selectionManager.select(marker.get('identity'));
		}
	})(marker));

	return marker;
});

Helpful resources

Announcements
May PBI 25 Carousel

Power BI Monthly Update - May 2025

Check out the May 2025 Power BI update to learn about new features.

Notebook Gallery Carousel1

NEW! Community Notebooks Gallery

Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.

May 2025 Monthly Update

Fabric Community Update - May 2025

Find out what's new and trending in the Fabric community.