Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Client
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
web-et-numerique
Factory
Resin
Client
Commits
a88da0a6
Commit
a88da0a6
authored
4 years ago
by
Hugo SUBTIL
Browse files
Options
Downloads
Patches
Plain Diff
fix: add mouseevent handling for markers
parent
b6f7966f
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!31
Recette
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/app/map/services/map.service.ts
+44
-23
44 additions, 23 deletions
src/app/map/services/map.service.ts
src/assets/ico/sprite.svg
+9
-0
9 additions, 0 deletions
src/assets/ico/sprite.svg
with
53 additions
and
23 deletions
src/app/map/services/map.service.ts
+
44
−
23
View file @
a88da0a6
import
{
Injectable
}
from
'
@angular/core
'
;
import
{
divIcon
,
Map
}
from
'
leaflet
'
;
import
{
DivIcon
,
divIcon
,
Map
}
from
'
leaflet
'
;
import
{
Marker
}
from
'
leaflet
'
;
@
Injectable
({
...
...
@@ -7,17 +7,35 @@ import { Marker } from 'leaflet';
})
export
class
MapService
{
private
static
markersList
=
{};
public
markerIconHover
=
divIcon
({
className
:
null
,
html
:
'
<svg width="40" height="46"><use xlink:href="assets/ico/sprite.svg#map-marker-locate"></use></svg>
'
,
iconSize
:
[
35
,
41
],
iconAnchor
:
[
13
,
41
],
});
public
markerIcon
=
divIcon
({
className
:
null
,
html
:
'
<svg width="40" height="46"><use xlink:href="assets/ico/sprite.svg#map-marker"></use></svg>
'
,
iconSize
:
[
35
,
41
],
iconAnchor
:
[
13
,
41
],
});
public
markerIconMdm
=
divIcon
({
className
:
null
,
html
:
'
<svg width="19" height="24"><use xlink:href="assets/ico/sprite.svg#mdm"></use></svg>
'
,
iconSize
:
[
19
,
24
],
iconAnchor
:
[
19
,
24
],
});
public
markerIconMdmHover
=
divIcon
({
className
:
null
,
html
:
'
<svg width="19" height="24"><use xlink:href="assets/ico/sprite.svg#mdm-hover"></use></svg>
'
,
iconSize
:
[
19
,
24
],
iconAnchor
:
[
19
,
24
],
});
constructor
()
{}
public
createMarker
(
lat
:
number
,
lon
:
number
,
id
:
number
,
tooltip
?:
string
):
Marker
{
const
markerIcon
=
divIcon
({
className
:
null
,
html
:
'
<svg width="40" height="46"><use xlink:href="assets/ico/sprite.svg#map-marker"></use></svg>
'
,
iconSize
:
[
35
,
41
],
iconAnchor
:
[
13
,
41
],
});
const
marker
=
new
Marker
([
lat
,
lon
],
{
icon
:
markerIcon
});
marker
.
on
(
'
mouseover
'
,
(
evt
)
=>
{
const
marker
=
new
Marker
([
lat
,
lon
],
{
icon
:
this
.
markerIcon
});
marker
.
on
(
'
mouseclick
'
,
(
evt
)
=>
{
evt
.
target
.
openPopup
();
});
...
...
@@ -25,17 +43,26 @@ export class MapService {
marker
.
bindPopup
(
tooltip
);
}
MapService
.
markersList
[
id
]
=
marker
;
return
marker
;
return
this
.
bindMousEventOnMarker
(
marker
,
this
.
markerIcon
,
this
.
markerIconHover
)
;
}
public
createMDMMarker
(
lat
:
number
,
lon
:
number
):
Marker
{
const
markerIcon
=
divIcon
({
className
:
null
,
html
:
'
<svg width="19" height="24"><use xlink:href="assets/ico/sprite.svg#mdm"></use></svg>
'
,
iconSize
:
[
19
,
24
],
iconAnchor
:
[
19
,
24
],
const
marker
=
new
Marker
([
lat
,
lon
],
{
icon
:
this
.
markerIconMdm
,
attribution
:
'
mdm
'
});
return
this
.
bindMousEventOnMarker
(
marker
,
this
.
markerIconMdm
,
this
.
markerIconMdmHover
);
}
private
bindMousEventOnMarker
(
marker
:
Marker
,
regularIcon
:
DivIcon
,
hoverIcon
:
DivIcon
):
Marker
{
marker
.
on
(
'
mouseover
'
,
(
e
)
=>
{
if
(
marker
.
getIcon
()
===
regularIcon
)
{
marker
.
setIcon
(
hoverIcon
);
}
});
marker
.
on
(
'
mouseout
'
,
(
e
)
=>
{
marker
.
setIcon
(
regularIcon
);
});
return
new
Marker
([
lat
,
lon
],
{
icon
:
markerIcon
,
attribution
:
'
mdm
'
})
;
return
marker
;
}
/**
...
...
@@ -64,13 +91,7 @@ export class MapService {
*/
public
setSelectedMarker
(
id
:
number
):
void
{
if
(
id
)
{
const
markerIcon
=
divIcon
({
className
:
null
,
html
:
'
<svg width="40" height="46"><use xlink:href="assets/ico/sprite.svg#map-marker-locate"></use></svg>
'
,
iconSize
:
[
35
,
41
],
iconAnchor
:
[
13
,
41
],
});
this
.
getMarker
(
id
).
setIcon
(
markerIcon
);
this
.
getMarker
(
id
).
setIcon
(
this
.
markerIconHover
);
}
}
...
...
This diff is collapsed.
Click to expand it.
src/assets/ico/sprite.svg
+
9
−
0
View file @
a88da0a6
...
...
@@ -92,6 +92,15 @@
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M2.84054 5.57617C1.72559 6.04339 1 7.13416 1 8.34305V23H8V18.5C8 17.6716 8.67157 17 9.5 17C10.3284 17 11 17.6716 11 18.5V23H18V8.40362C18 7.1644 17.2381 6.05271 16.0823 5.60565L14.5555 5.01505C14.1291 4.85011 13.746 4.5899 13.4355 4.2543L10.9183 1.5332C10.1451 0.6974 8.83121 0.674761 8.0297 1.48343L5.19821 4.34018C4.92065 4.62023 4.5906 4.84281 4.22694 4.9952L2.84054 5.57617ZM11 4.5C11 5.32843 10.3284 6 9.5 6C8.67157 6 8 5.32843 8 4.5C8 3.67157 8.67157 3 9.5 3C10.3284 3 11 3.67157 11 4.5ZM4.25 15.9354C3.54057 16.0544 3 16.6714 3 17.4146V18.75H4.25V15.9354ZM3 21.9146V19.25H4.25V21.9146H3ZM4.75 21.9146V19.25H6V21.9146H4.75ZM6 17.4146V18.75H4.75V15.9354C5.45943 16.0544 6 16.6714 6 17.4146ZM13 17.4146C13 16.6714 13.5406 16.0544 14.25 15.9354V18.75H13V17.4146ZM13 19.25V21.9146H14.25V19.25H13ZM14.75 19.25V21.9146H16V19.25H14.75ZM16 18.75V17.4146C16 16.6714 15.4594 16.0544 14.75 15.9354V18.75H16ZM14.25 8C13.5406 8.11902 13 8.73601 13 9.47926V10.8146H14.25V8ZM13 13.9793V11.3146H14.25V13.9793H13ZM14.75 13.9793V11.3146H16V13.9793H14.75ZM16 9.47926V10.8146H14.75V8C15.4594 8.11902 16 8.73601 16 9.47926ZM8 9.47926C8 8.73601 8.54057 8.11902 9.25 8V10.8146H8V9.47926ZM8 11.3146V13.9793H9.25V11.3146H8ZM9.75 11.3146V13.9793H11V11.3146H9.75ZM11 10.8146V9.47926C11 8.73601 10.4594 8.11902 9.75 8V10.8146H11ZM4.25 8C3.54057 8.11902 3 8.73601 3 9.47926V10.8146H4.25V8ZM3 13.9793V11.3146H4.25V13.9793H3ZM4.75 13.9793V11.3146H6V13.9793H4.75ZM6 9.47926V10.8146H4.75V8C5.45943 8.11902 6 8.73601 6 9.47926Z"
fill=
"#D4C4A9"
/>
</symbol>
<symbol
id=
"mdm-hover"
width=
"19"
height=
"24"
viewBox=
"0 0 19 24"
fill=
"none"
xmlns=
"http://www.w3.org/2000/svg"
>
<mask
id=
"path-1-outside-1"
maskUnits=
"userSpaceOnUse"
x=
"0"
y=
"-0.108661"
width=
"19"
height=
"24"
fill=
"black"
>
<rect
fill=
"white"
y=
"-0.108661"
width=
"19"
height=
"24"
/>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M2.84054 5.57617C1.72559 6.04339 1 7.13416 1 8.34305V23H8V18.5C8 17.6716 8.67157 17 9.5 17C10.3284 17 11 17.6716 11 18.5V23H18V8.40362C18 7.1644 17.2381 6.05271 16.0823 5.60565L14.5555 5.01505C14.1291 4.85011 13.746 4.5899 13.4355 4.2543L10.9183 1.5332C10.1451 0.6974 8.83121 0.674761 8.0297 1.48343L5.19821 4.34019C4.92065 4.62023 4.5906 4.84281 4.22694 4.9952L2.84054 5.57617Z"
/>
</mask>
<path
d=
"M2.84054 5.57617L3.03378 6.03731L2.84054 5.57617ZM1 23H0.5V23.5H1V23ZM8 23V23.5H8.5V23H8ZM11 23H10.5V23.5H11V23ZM18 23V23.5H18.5V23H18ZM16.0823 5.60565L16.2627 5.13932L16.0823 5.60565ZM14.5555 5.01505L14.3751 5.48138H14.3751L14.5555 5.01505ZM13.4355 4.2543L13.0685 4.59383V4.59383L13.4355 4.2543ZM10.9183 1.5332L11.2854 1.19366V1.19366L10.9183 1.5332ZM8.0297 1.48343L8.38482 1.8354V1.8354L8.0297 1.48343ZM5.19821 4.34019L4.84309 3.98821L5.19821 4.34019ZM4.22694 4.9952L4.42019 5.45634L4.22694 4.9952ZM1.5 8.34305C1.5 7.33564 2.10466 6.42666 3.03378 6.03731L2.6473 5.11502C1.34652 5.66011 0.5 6.93268 0.5 8.34305H1.5ZM1.5 23V8.34305H0.5V23H1.5ZM8 22.5H1V23.5H8V22.5ZM8.5 23V18.5H7.5V23H8.5ZM8.5 18.5C8.5 17.9477 8.94772 17.5 9.5 17.5V16.5C8.39543 16.5 7.5 17.3954 7.5 18.5H8.5ZM9.5 17.5C10.0523 17.5 10.5 17.9477 10.5 18.5H11.5C11.5 17.3954 10.6046 16.5 9.5 16.5V17.5ZM10.5 18.5V23H11.5V18.5H10.5ZM18 22.5H11V23.5H18V22.5ZM17.5 8.40362V23H18.5V8.40362H17.5ZM15.9019 6.07197C16.865 6.44453 17.5 7.37094 17.5 8.40362H18.5C18.5 6.95786 17.6111 5.66089 16.2627 5.13932L15.9019 6.07197ZM14.3751 5.48138L15.9019 6.07197L16.2627 5.13932L14.7359 4.54872L14.3751 5.48138ZM13.0685 4.59383C13.4307 4.98537 13.8776 5.28895 14.3751 5.48138L14.7359 4.54872C14.3805 4.41127 14.0613 4.19443 13.8026 3.91476L13.0685 4.59383ZM10.5513 1.87273L13.0685 4.59383L13.8026 3.91476L11.2854 1.19366L10.5513 1.87273ZM8.38482 1.8354C8.98595 1.22891 9.97141 1.24589 10.5513 1.87273L11.2854 1.19366C10.3189 0.148915 8.67647 0.120616 7.67458 1.13145L8.38482 1.8354ZM5.55333 4.69216L8.38482 1.8354L7.67458 1.13145L4.84309 3.98821L5.55333 4.69216ZM4.42019 5.45634C4.84445 5.27856 5.22951 5.01888 5.55333 4.69216L4.84309 3.98821C4.61179 4.22158 4.33675 4.40706 4.0337 4.53405L4.42019 5.45634ZM3.03378 6.03731L4.42019 5.45634L4.0337 4.53405L2.6473 5.11502L3.03378 6.03731Z"
fill=
"white"
mask=
"url(#path-1-outside-1)"
/>
<path
fill-rule=
"evenodd"
clip-rule=
"evenodd"
d=
"M2.84054 5.57617C1.72559 6.04339 1 7.13416 1 8.34305V23H8V18.5C8 17.6716 8.67157 17 9.5 17C10.3284 17 11 17.6716 11 18.5V23H18V8.40362C18 7.1644 17.2381 6.05271 16.0823 5.60565L14.5555 5.01505C14.1291 4.85011 13.746 4.5899 13.4355 4.2543L10.9183 1.5332C10.1451 0.6974 8.83121 0.674761 8.0297 1.48343L5.19821 4.34018C4.92065 4.62023 4.5906 4.84281 4.22694 4.9952L2.84054 5.57617ZM11 4.5C11 5.32843 10.3284 6 9.5 6C8.67157 6 8 5.32843 8 4.5C8 3.67157 8.67157 3 9.5 3C10.3284 3 11 3.67157 11 4.5ZM4.25 15.9354C3.54057 16.0544 3 16.6714 3 17.4146V18.75H4.25V15.9354ZM3 21.9146V19.25H4.25V21.9146H3ZM4.75 21.9146V19.25H6V21.9146H4.75ZM6 17.4146V18.75H4.75V15.9354C5.45943 16.0544 6 16.6714 6 17.4146ZM13 17.4146C13 16.6714 13.5406 16.0544 14.25 15.9354V18.75H13V17.4146ZM13 19.25V21.9146H14.25V19.25H13ZM14.75 19.25V21.9146H16V19.25H14.75ZM16 18.75V17.4146C16 16.6714 15.4594 16.0544 14.75 15.9354V18.75H16ZM14.25 8C13.5406 8.11902 13 8.73601 13 9.47926V10.8146H14.25V8ZM13 13.9793V11.3146H14.25V13.9793H13ZM14.75 13.9793V11.3146H16V13.9793H14.75ZM16 9.47926V10.8146H14.75V8C15.4594 8.11902 16 8.73601 16 9.47926ZM8 9.47926C8 8.73601 8.54057 8.11902 9.25 8V10.8146H8V9.47926ZM8 11.3146V13.9793H9.25V11.3146H8ZM9.75 11.3146V13.9793H11V11.3146H9.75ZM11 10.8146V9.47926C11 8.73601 10.4594 8.11902 9.75 8V10.8146H11ZM4.25 8C3.54057 8.11902 3 8.73601 3 9.47926V10.8146H4.25V8ZM3 13.9793V11.3146H4.25V13.9793H3ZM4.75 13.9793V11.3146H6V13.9793H4.75ZM6 9.47926V10.8146H4.75V8C5.45943 8.11902 6 8.73601 6 9.47926Z"
fill=
"#BD9E6A"
/>
</symbol>
<symbol
id=
"wifi"
width=
"22"
height=
"22"
viewBox=
"0 0 22 22"
fill=
"none"
xmlns=
"http://www.w3.org/2000/symbol"
>
<g
clip-path=
"url(#clip0)"
>
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment