1import{j as e,T as r,M as t,L as a,P as l,A as s}from"./index-_NgcdKo3.js";const d="#4a9eff",c="https://apps.apple.com/us/app/kmz-previewer/id6772737784",h=["/kmzpreviewer/ios-1.png","/kmzpreviewer/ios-2.png"];function y({items:i}){return e.jsx("ul",{style:o.featureList,children:i.map((n,p)=>e.jsxs("li",{style:o.featureItem,children:[e.jsx("span",{style:o.featureDot}),e.jsx("span",{children:n})]},p))})}function u({url:i}){return i?e.jsxs("a",{href:i,target:"_blank",rel:"noopener noreferrer",style:o.storeBtn,children:[e.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor",style:{flexShrink:0},children:e.jsx("path",{d:"M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.8-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"})}),"Download on the App Store"]}):e.jsxs("div",{style:o.storeBtnPending,children:[e.jsx("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor",style:{flexShrink:0},children:e.jsx("path",{d:"M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.8-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"})}),"Pending Apple Review · Coming Soon"]})}function f(){return e.jsxs("div",{style:o.root,children:[e.jsxs("div",{style:o.hero,children:[e.jsx("div",{style:o.heroIcon,children:"ðï¸"}),e.jsxs("div",{children:[e.jsx("div",{style:o.kicker,children:"PHOTOGRAPHY UTILITY · iPHONE"}),e.jsx("h1",{style:o.heroTitle,children:"KMZ Previewer"}),e.jsx("p",{style:o.heroSub,children:"Bring your photo locations and planned routes to life on a 3D map â right on your iPhone"})]})]}),e.jsxs("div",{style:o.introCard,children:[e.jsx("p",{style:o.introText,children:"If you plan shoots with Google Earth, save KMZ files from hiking apps, or use the NMEA Log Converter to map your shooting sessions, KMZ Previewer is the fastest way to open and explore those files on your iPhone. Pinch to zoom in on a mountain pass, tilt into a realistic 3D elevation view, and switch between four map styles â Standard, Terrain, Hybrid, and Satellite â in a single tap."}),e.jsx("p",{style:o.introText,children:"For photographers, it's a natural companion to route planning: open a KMZ of scouted locations before heading out, drop pins at spots you want to revisit, search for trailheads or landmarks and see how far they are from your saved waypoints. Everything persists between sessions so your planning work is always one tap away."})]}),e.jsxs("div",{style:o.versionPanel,children:[e.jsxs("div",{style:o.versionHeader,children:[e.jsxs("div",{children:[e.jsx("h2",{style:o.versionTitle,children:"iPhone Version"}),e.jsx("p",{style:o.versionSubtitle,children:"Native SwiftUI · Apple MapKit · works offline"})]}),e.jsx(u,{url:c})]}),e.jsx("p",{style:o.body,children:"Open any KMZ file straight from Files, iCloud, Mail, or the share sheet. Placemarks, paths, and polygons render automatically â no setup, no import steps. Your KMZ features appear in orange, custom pins in green, search results in blue, and your live location as the classic blue dot."}),e.jsx("p",{style:o.body,children:"Drop your own pins with a tap â name them, edit them later, or drag to reposition with a long-press. Type in exact latitude and longitude for precision waypoints. Every pin and the last opened KMZ are saved automatically, so closing and reopening the app never loses your work."}),e.jsx("p",{style:o.body,children:"The search bar finds restaurants, landmarks, addresses, and trailheads. Tap any result to see the straight-line distance to the nearest KMZ point and to your current location â handy for gauging how far a planned shot is from a real access point."}),e.jsx("h3",{style:o.featuresHeading,children:"Features"}),e.jsx(y,{items:["Open any KMZ file from Files, iCloud, Mail, or the share sheet","Placemarks, paths, and polygons all render automatically","Four map styles: Standard, Terrain, Hybrid, Satellite â all with realistic 3D elevation","Pinch to zoom, tilt for 3D perspective â mountains look like mountains","Drop custom pins by tapping the map or entering lat/long manually","Name, edit, and drag-to-reposition each custom pin","Search for landmarks, addresses, and trailheads
1with distance to your KMZ and location","Color-coded layers: KMZ features (orange), custom pins (green), search results (blue)","Share your KMZ via AirDrop, Messages, Mail, or save back to Files","Last opened KMZ and all custom pins persist automatically between sessions","Works offline once a map area has been viewed","No ads, no tracking, no accounts"]}),e.jsx("h3",{style:o.featuresHeading,children:"Screenshots"}),e.jsx("div",{style:o.shotGrid,children:h.map((i,n)=>e.jsx("img",{src:i,alt:`Screenshot ${n+1}`,style:o.shotImg},n))}),e.jsx("div",{style:o.privacyNote,children:"ð Your location is only used to show your position and compute distances â it's never sent anywhere. No analytics, no third-party SDKs, no accounts."})]}),e.jsxs("div",{style:o.tutorialCard,children:[e.jsxs("div",{style:o.tutorialHeader,children:[e.jsx("span",{style:o.tutorialIcon,children:"ð"}),e.jsxs("div",{children:[e.jsx("h2",{style:o.tutorialTitle,children:"Using KMZ Previewer for Photo Planning"}),e.jsx("p",{style:o.tutorialSub,children:"From Google Earth on the desktop to the field on your iPhone"})]})]}),e.jsx("p",{style:o.tutorialBody,children:"A common photography workflow starts on the desktop: scout locations in Google Earth, save your planned spots as placemarks, and export the project as a KMZ. KMZ Previewer picks up from there â open that file on your iPhone before you leave, and your scouted locations are pinned on a map you can take into the field."}),e.jsx("p",{style:o.tutorialBody,children:"The Terrain and Satellite modes are particularly useful for landscape photographers: Terrain shows elevation and contour so you can judge ridge lines and valley shadows, while Satellite confirms what the terrain actually looks like at ground level before you commit to the drive."}),e.jsx("p",{style:o.tutorialBody,children:"KMZ Previewer also works naturally alongside NMEA Log Converter â convert your Solmeta geotagger log into a KMZ on your Mac, then open it in KMZ Previewer on your iPhone to browse your shooting route on the go or share it with another photographer."}),e.jsxs("div",{style:o.tipBox,children:[e.jsx("strong",{style:{color:s},children:"Tip:"}),e.jsx("span",{style:{color:t},children:" Use the search bar to look up a trailhead or access road near one of your KMZ placemarks. The straight-line distance readout tells you instantly whether your scouted spot is actually reachable from the nearest road or parking area."})]})]}),e.jsxs("div",{style:o.privacyPolicy,children:[e.jsx("h2",{style:o.privacyTitle,children:"Privacy Policy"}),e.jsx("p",{style:o.privacyDate,children:"Effective Date: September 30, 2026"}),e.jsx("h3",{style:o.privacySection,children:"No Data Collection"}),e.jsx("p",{style:o.privacyBody,children:"KMZ Previewer does not collect, store, or share any personal or non-personal information about its users. Your location is used only to display your position on the map and compute distances â it is never transmitted to any external server."}),e.jsx("h3",{style:o.privacySection,children:"No Third-Party Services"}),e.jsx("p",{style:o.privacyBody,children:"KMZ Previewer does not use any third-party analytics tools, advertising platforms, or external SDKs that collect or process user data. Map tiles are served by Apple MapKit under Apple's own privacy policy."}),e.jsx("h3",{style:o.privacySection,children:"No Account Required"}),e.jsx("p",{style:o.privacyBody,children:"You are not required to create an account or provide any personal information to use this app."}),e.jsx("h3",{style:o.privacySection,children:"Changes to This Policy"}),e.jsx("p",{style:o.privacyBody,children:"This Privacy Policy may be updated periodically to ensure compliance with legal requirements or App Store guidelines. Updates will be posted on this page and the Effective Date will be revised accordingly."})]})]})}const o={root:{maxWidth:1050,margin:"0 auto",padding:"20px 0 48px",fontFamily:"'Geist', sans-serif",color:r},hero:{display:"flex",alignItems:"flex-start",gap:20,marginBottom:28},heroIcon:{fontSize:48,lineHeight:1,flexShrink:0,marginTop:4},kicker:{fontSize:11,fontWeight:600,letterSpacing:"0.12em",color:d,marginBottom:6,textTransform:"uppercase"},heroTitle:{fontSize:32,fontWeight:700,color:r,margin:"0 0 6px",letterSpacing:"-0.02em"},heroSub:{fontSize:15,color:t,margin:0,lineHeight:1.5},introCard:{background:l,border:`1px solid ${a}
1`,borderRadius:12,padding:"22px 26px",marginBottom:28,display:"flex",flexDirection:"column",gap:12},introText:{fontSize:14,color:t,lineHeight:1.8,margin:0},versionPanel:{background:l,border:`1px solid ${a}`,borderRadius:12,padding:"24px 28px",display:"flex",flexDirection:"column",gap:16,marginBottom:28},versionHeader:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:16,flexWrap:"wrap"},versionTitle:{fontSize:22,fontWeight:700,color:r,margin:"0 0 4px",letterSpacing:"-0.01em"},versionSubtitle:{fontSize:13,color:t,margin:0},body:{fontSize:14,color:t,lineHeight:1.8,margin:0},featuresHeading:{fontSize:13,fontWeight:600,color:r,textTransform:"uppercase",letterSpacing:"0.08em",margin:"4px 0 8px"},featureList:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:8},featureItem:{display:"flex",alignItems:"flex-start",gap:10,fontSize:14,color:t,lineHeight:1.5},featureDot:{width:6,height:6,borderRadius:"50%",background:d,flexShrink:0,marginTop:6},shotGrid:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:12},shotImg:{maxWidth:"100%",borderRadius:10,border:`1px solid ${a}`,display:"block"},privacyNote:{fontSize:12,color:t,background:"#1a1a1f",borderRadius:8,padding:"10px 14px",marginTop:4},storeBtn:{display:"inline-flex",alignItems:"center",gap:8,background:r,color:"#111",borderRadius:10,padding:"10px 18px",fontSize:13,fontWeight:600,textDecoration:"none",flexShrink:0},storeBtnPending:{display:"inline-flex",alignItems:"center",gap:8,background:"transparent",color:t,border:`1px dashed ${a}`,borderRadius:10,padding:"10px 18px",fontSize:13,flexShrink:0,whiteSpace:"nowrap"},tutorialCard:{background:"#1a1a1f",border:`1px solid ${a}`,borderRadius:12,padding:"22px 26px",display:"flex",flexDirection:"column",gap:16,marginBottom:28},tutorialHeader:{display:"flex",alignItems:"flex-start",gap:16,flexWrap:"wrap"},tutorialIcon:{fontSize:32,lineHeight:1,flexShrink:0,marginTop:2},tutorialTitle:{fontSize:18,fontWeight:700,color:r,margin:"0 0 4px"},tutorialSub:{fontSize:13,color:t,margin:0},tutorialBody:{fontSize:14,color:t,lineHeight:1.8,margin:0},tipBox:{background:s+"10",border:`1px solid ${s}30`,borderRadius:8,padding:"12px 16px",fontSize:13,lineHeight:1.7,display:"flex",flexDirection:"column",gap:4},privacyPolicy:{marginTop:36,borderTop:`1px solid ${a}`,paddingTop:28,display:"flex",flexDirection:"column",gap:12},privacyTitle:{fontSize:16,fontWeight:700,color:r,margin:0,letterSpacing:"-0.01em"},privacyDate:{fontSize:12,color:t,margin:0,fontStyle:"italic"},privacySection:{fontSize:13,fontWeight:600,color:r,margin:"8px 0 0",textTransform:"uppercase",letterSpacing:"0.06em"},privacyBody:{fontSize:13,color:t,lineHeight:1.7,margin:0}};export{f as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.