Purpose
Given {landmark-query} and optional {area-query}, resolve the intended place in Google Maps, open Street View near its coordinates, and report visually plausible pull-offs, widened shoulders, lay-bys, entrances, or nearby lots. Inspect more than one road-facing heading or nearby viewpoint when a single panorama does not show the approach clearly. This is read-only. Do not claim that a location is legal, permitted, safe, or public solely because it appears usable in imagery.
When to Use
- Finding possible roadside parking near a rural landmark, lake, trailhead, shrine, viewpoint, or dam.
- Checking access roads around a named place before a visit.
- Comparing visible turnouts, widened shoulders, lay-bys, and nearby lots.
- Requests explicitly requiring Google Street View rather than only map or satellite imagery.
- Inspecting several approaches or orientations around a landmark when one panorama has insufficient visibility.
Workflow
- Resolve the place with one direct Maps search navigation; do not visit Google's homepage or type into a search box:
https://www.google.com/maps/search/?api=1&query={url-encoded-area-query-and-landmark-query}Wait for results, then evaluate anchors containing /maps/place/. Select the result whose visible name, locality, and landmark type best match {landmark-query}. Japanese searches may resolve to romanized names; compare both scripts and locality. Read the complete result href and never fabricate an opaque place identifier.
Resolve coordinates from the selected result URL. Prefer the coordinate pair in
/@{latitude},{longitude},...or the!3d{latitude}!4d{longitude}segments. If absent, open the selected result once and read its rendered map/place context. Coordinates are intermediate data, not reusable constants.Open Street View directly at the resolved point:
https://www.google.com/maps/@?api=1&map_action=pano&viewpoint={latitude},{longitude}Use one or more optional orientations without clicking the Street View control:
https://www.google.com/maps/@?api=1&map_action=pano&viewpoint={latitude},{longitude}&heading={degrees}&pitch={degrees}Batch navigation, a 3–5 second render wait, and evaluation in as few browser-agent calls as possible. If the exact point has no imagery, use a nearby coordinate obtained from the resolved map/road context; do not invent a road position. When the road layout warrants it, inspect the same viewpoint with different heading values and/or inspect a small set of nearby road viewpoints. Keep the actual viewpoint URLs for provenance.
- Run this evaluator on each loaded Maps page:
(()=>{const clean=s=>(s||'').replace(/\s+/g,' ').trim();const u=new URL(location.href);const body=clean(document.body?.innerText);const coord=(u.pathname.match(/@(-?\d+(?:\.\d+)?),(-?\d+(?:\.\d+)?)/)||[]);const pano=/map_action=pano|street.?view|photosphere|pano/i.test(location.href+' '+body);const blocked=/consent|sign in|captcha|unusual traffic|verify you are human/i.test(body)&&!pano;const labels=[...new Set([...document.querySelectorAll('[aria-label]')].map(e=>clean(e.getAttribute('aria-label'))).filter(Boolean))].slice(0,100);const evidence=[...new Set((document.body?.innerText||'').split(/\n+/).map(clean).filter(x=>x&&/(parking|park|車|駐車|路肩|駐車場|停車|shoulder|lay.?by|pull.?off|no parking|通行止め|立入禁止|湖|杉|street view|streetview)/i.test(x)))].slice(0,50);const nearbyLinks=[...document.querySelectorAll('a[href]')].map(a=>({text:clean(a.innerText||a.getAttribute('aria-label')),href:a.href})).filter(x=>x.href&&/(parking|park|駐車|路肩|車止め|trail|lake|dam)/i.test(x.text+' '+x.href)).slice(0,30);return{url:location.href,isGoogleMaps:/((^|\.)google\.com)$/.test(u.hostname)&&u.pathname.startsWith('/maps'),isStreetView:pano,latitude:coord[1]?Number(coord[1]):null,longitude:coord[2]?Number(coord[2]):null,heading:u.searchParams.get('heading'),pitch:u.searchParams.get('pitch'),blocked,visibleLabels:labels,parkingEvidence:evidence,nearbyLinks,bodyExcerpt:body.slice(0,2000)}})()Inspect the rendered panorama itself. Record a candidate only when imagery visibly shows a widened shoulder, turnout, lay-by, entrance, or nearby lot. For each candidate report the actual viewpoint URL, approximate coordinates or pano position, road/approach, visual evidence, obstructions, signs or markings, and confidence. Compare evidence across headings/viewpoints rather than treating a single obstructed view as definitive. If coverage or visibility is inadequate, return no candidate rather than guessing.
Separate
potentially_usablefromnot_recommended. A missing visible sign means unknown, not permission. Advise checking current signs, road markings, private-property status, traffic, weather, gates, and local rules in person. Do not recommend blocking traffic, stopping on curves, entering private land, or stopping where signs or markings prohibit it.
Site-Specific Gotchas
- Google Maps search uses
https://www.google.com/maps/search/?api=1&query=...and resolves Japanese and area-qualified landmark names in one navigation. - Search result hrefs contain opaque place identifiers and may contain coordinates in
/@lat,lngor!3d...!4d...; read them from the DOM and never guess them. - The direct Street View form is
https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=lat,lng;headingandpitchare optional orientation parameters useful for inspecting different road approaches. - Multiple direct pano navigations can be used to compare nearby road viewpoints and orientations. Preserve each actual URL in the result, but do not save instance-specific coordinates, pano hashes, analytics parameters, or challenge URLs as canonical recipe data.
- A nearby panorama may be selected instead of the exact landmark point. Report the actual viewpoint URL and distinguish landmark coordinates from panorama coordinates.
- Street View imagery is time-dependent and may omit current signs, construction, gates, snow, parked vehicles, or road conditions. Report the imagery date when Google exposes it.
- Panorama pages can have sparse textual DOM. Use the evaluator for page state and labels, but rely on rendered imagery for shoulder width, barriers, entrances, and obstructions.
- Consent, login, CAPTCHA, or unusual-traffic interstitials are blocked states. Do not infer candidates unless the panorama is actually rendered.
- Nearby lots or access roads may be private, gated, or intended only for customers or residents. Treat them as visual observations, not permission.
Expected Output
{
"success": true,
"resolvedPlace": {
"name": "{visible landmark name}",
"address": "{visible locality/address}",
"placeUrl": "{resolved /maps/place URL}",
"latitude": 0,
"longitude": 0
},
"streetViewUrls": [
"https://www.google.com/maps/@?api=1&map_action=pano&viewpoint={lat},{lng}&heading={degrees}"
],
"candidates": [
{
"locationDescription": "{visible turnout or widened shoulder}",
"approximateCoordinates": {"latitude": 0, "longitude": 0},
"viewpointUrl": "{actual inspected Street View URL}",
"roadOrApproach": "{road name or direction if visible}",
"status": "potentially_usable",
"visualEvidence": ["{widened shoulder visible}"],
"hazardsOrRestrictions": ["{sign, curve, narrow road, private entrance, or unknown}"],
"confidence": "medium",
"caveat": "Verify current signs, legality, and safety on site."
}
],
"blocked": false,
"pageEvidence": [{"url": "{viewpoint URL}", "parkingEvidence": [], "bodyExcerpt": "..."}]
}If no suitable pull-off is visible, return an empty candidates array and explain that Street View did not provide sufficient evidence. Never invent a parking location.